是否有与jQuery事件回调相关的特殊性。比如说,我在div元素上注册了mousedown事件回调,也在文档上注册了。如果我点击div会触发哪一个?注册顺序是否重要?或特殊性(如css)很重要?
感谢。
答案 0 :(得分:5)
它将冒出DOM树并调用该类型的所有其他事件。
您可以使用event.stopPropagation()
停止此操作。
如果你分配了这样的事件......
$(document).mousedown(function() { alert('document'); });
$('div').mousedown(function() { alert('div'); });
在任何地方向下鼠标都会触发document
的处理程序,并使用文档获得一个警告对话框。
鼠标按下任何div
将触发div
的处理程序,然后将DOM一直冒泡到document
,它将触发其事件处理程序。您将获得两个警报对话框;首先是 div 一个,然后是文档一个。
答案 1 :(得分:2)
将触发两个事件,首先是div,然后是文档点击。
答案 2 :(得分:1)
它将从内到外执行两者。单击div将触发div事件然后触发文档。的 Example on jsFiddle 强>
$(window.document).click(function(e){
alert("doc");
});
$("div").click(function(e){
alert("div");
});
您可以避免使用e.stopImmediatePropagation()
触发其他事件。的 See this example 强>
$(window.document).click(function(e){
alert("doc");
});
$("div").click(function(e){
alert("div");
e.stopImmediatePropagation(); // prevents $(doc) from rising
});