簡單地說:IE 8 - Click事件衝入<html>元素?
jQuery("html").click(function(e){
if (e.target == this){
alert("this really shouldn't happen");
}
});
在IE8中,警報被觸發頁面上的許多地方,包括嵌套在其他元素中的元素!有什麼會導致這種奇怪的行爲?
這是一個重大的問題,因爲這將導致click事件繞過綁定到文檔中的元素所有處理程序,直接對文件本身,而不是觸發(直接,未授權)。
編輯
我也懷疑不對勁了使用開發工具時,IE8的...當我將「通過單擊選擇元素」使用的工具和懸停在有問題的地方,它會「框「整個文檔,就好像在那個位置沒有後代(是的,我點擊了Refresh來確保Dev Tools有一個最新的文檔模式)。
EDIT 2
對不起,我忘了提......這些問題點之一是「DL」元素......也許IE8被這些迷惑,只是手離開事件的文件?
我很清楚什麼事件冒泡的......然而,e.target表示被點擊的初始元素,而不是綁定到處理元素(請參見http ://api.jquery.com/event.target/)。如果e.target和「this」相等,則意味着處理程序是通過點擊綁定元素觸發的,而不是後代。 – 2012-02-27 20:24:56
有趣。越野車。如果使用'e.stopImmediatePropagation()',會發生同樣的事情嗎?不是說你應該需要它,只是想知道這是否是一個解決方案。 – 2012-02-27 20:25:21