【坑】冒泡事件不生效 --- iPhone處理冒泡事件的規則

寫手機側滑的時候 電腦及 Android 手機都沒毛病
惟獨 iPhone 沒有效果 懷疑是 iPhone 本身的問題
一百度還真是【捂臉】css

iPhone處理冒泡事件的規則:

1.點擊某個元素;
2.若是這個元素上沒有處理該事件,則繼續向上冒泡,直到body下的子節點爲止。若是此時仍是沒有元素處理這個事件,則丟棄該事件,再也不向上冒泡;
3.若是在這條冒泡鏈當中,有一個元素處理了該事件,則事件還會一直向上冒泡,直到 window 因此就須要在body的某個子節點添加一個空的事件處理函數ide

//解決代碼
$("body").children().click(function () { /*這裏不要寫任何代碼*/} );

具體應該怎麼用呢
我用一個側滑的小例子舉例
看【重點】位置的就行函數

$('#ph-more').on('click',function (event) {
    event.stopPropagation();
    //側滑出來的 box
    $("#sideBox").animate({right:"0px",opacity:1},1000,function(){

    });
    //側滑出來變半透明的底
    $(".sideslip-black").animate({opacity:0.5},100).delay(500).css("display","block");
    var tag = $("#sideBox");
    var flag = true;
    //【重點來嘍! 】
    $("body").children().click(function () {/*這裏不要寫任何代碼*/});
    //【重點結束!】
    // 點擊 sideBox 之外的區域 使其消失
    $(document).bind("click",function(e){
        var target = $(e.target);
        if(target.closest(tag).length == 0 && flag == true){
            $(tag).animate({right:"-500px",opacity:0},1000);
            $(".sideslip-black").animate({opacity:0},100).delay(500).css("display","none");
            flag = false;
        }
    });
   
});
相關文章
相關標籤/搜索