[英]Click event doesnt work in safari mobile for some HTML content
在我的網絡應用程序中,有一個單獨的移動設備導航欄。 當單擊菜單按鈕或單擊站點中的任何其他位置時,我希望此導航欄折疊。 它已經適用於任何移動瀏覽器,但不適用於Safari移動設備(在Safari中也適用於主頁,但不適用於其他頁面)。 在其他頁面中,有一些動態生成的html。 似乎click事件對這些內容不起作用。 我真的很感激這個問題的解決方案。 代碼如下。 我試過'body',$(document),window而不是$('html')。 它也不適合他們。
$('html').click(function(event) {
var clickover = $(event.target);
var $navbar = $(".navbar-collapse");
var _opened = $navbar.hasClass("in");
if (_opened === true && !clickover.hasClass("navbar-toggle")) {
$navbar.collapse('hide');
}
});
我也嘗試過修復iPad的jQuery Click事件中提到的內容 。 但是那里提到的代碼根本沒有觸發。 我為此嘗試過的代碼如下。
var ua = navigator.userAgent,
event = (ua.match(/iPad/i)) ? "touchstart" : "click";
$('body').bind(event, function(e) {
var clickover = $(event.target);
var $navbar = $(".navbar-collapse");
var _opened = $navbar.hasClass("in");
if (_opened === true && !clickover.hasClass("navbar-toggle")) {
$navbar.collapse('hide');
}
}
我真的很感激我的問題的答案(我正在研究這一天超過一天,但沒有找到解決方案)。
無論如何,我終於找到了解決方案。 原因是,iPhone Safari不支持事件委派。 我最初的要求是在單擊HTML主體時觸發click事件。 無論如何,問題只發生在Safari移動設備上,我發現原因是,Safari不支持點擊事件的事件委托。 我通過在body CSS中添加以下代碼來解決它。
cursor: pointer;
我得到答案的資源是, iPhone上的Click事件委托
和
還有Dohab,謝謝你的回答。
您可以為整個頁面創建div容器,並將其綁定到click事件。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#container").click(function(){
$(this).hide();
});
});
</script>
</head>
<body>
<div id="container">
<p>If you click anywhere. I will hide</p>
...
...
</div>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.