寫了一個下拉菜單,在單擊空白地方的時候隱藏。
第一時間就是用$(document).click(function(){ //隱藏代碼 });
各大瀏覽器都沒問題,唯獨iPhone上的不會觸發事件。
后來排查了一遍原因發現,Safari中是這樣處理事件冒泡的:
1.點擊某個DIV或其他元素。
2.發現沒有處理該事件,繼續往上冒泡。
3.直到冒泡到body下面的子節點為止,還是沒有人處理該事件的話,就把該事件丟棄掉。不再往上冒泡。
4.只要在這一條冒泡鏈當中,有一個節點處理了該事件,它就不會丟棄該事件,會繼續往上冒,冒到body 然后document 然后window .
問題發現了,就是必須要有一個人處理這個事件,才會繼續往上冒。
那么解決辦法就是在body的下級,寫個空函數接收一下事件。就行了。
$("body").children().click(function () {
//這里不要寫任何代碼
});
完美解決!