简单地说:
jQuery("html").click(function(e){
if (e.target == this){
alert("this really shouldn't happen");
}
});
在IE8上,警报会在页面上的许多位置触发,包括嵌套在其他元素内的元素!有什么会导致这种怪异行为的吗?
这是一个主要问题,因为这会导致click事件绕过绑定到文档内部元素的所有处理程序,而不是直接在文档本身上触发(直接,而不是委派)。
编辑
[我还怀疑在IE8上使用开发人员工具时出现了问题……当我使用“通过单击选择元素”工具并将鼠标悬停在有问题的地方时,它将“装箱”整个文档,就好像有该位置没有任何子孙(是的,我单击“刷新”以确保“开发工具”具有文档的最新架构)。
编辑2
对不起,我忘了...这些麻烦点之一是“ dl”元素...也许IE8对此感到困惑,只是将事件交给了文档?
这是由于事件“冒泡”和事件“捕获”不同。
本页对此进行了很好的解释:http://www.quirksmode.org/js/events_order.html