簡體   English   中英

對於某些HTML內容,Click事件在safari mobile中不起作用

[英]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事件委托

jQuery單擊事件在iOS中不起作用:答案

還有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM