寫手機側滑的時候 電腦及 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; } }); });