显示示例代码here。这是有效的,但我想知道是否有另一种方法可以做到这一点,而不必创建一个事件处理程序,唯一的目的是防止冒泡消息,直到它的祖先。
基本上我希望代码执行的操作是:span
标记不是,然后调用p
标记的事件处理程序。另一种措辞方式:span
标记 的任何地方,都不要为p
标记调用事件处理程序。
我试图this,但它没有用。点击span标签时,它仍然会冒泡,这就是我想要阻止的内容
答案 0 :(得分:3)
$("div").on('click', "p", function(e){
if(e.target.nodeName != 'SPAN') {
alert("p was clicked");
}
});
检查在第一个事件处理程序中单击的元素的类型。只有当它是P元素时才显示警告。
编辑:有关jQuery传递给事件处理程序的参数的更多信息:e.currentTarget
是指您放置了事件侦听器的元素(在本例中为您的p标记)并且e.target
指的是您实际单击的元素(单击span时引用span元素,单击p时引用p元素。)
答案 1 :(得分:2)
<强> jsFiddle Demo
强>
检查鼠标事件的事件目标。如果目标是跨度,则返回处理程序
$("div").on('click', "p", function(e){
if($(e.target).is("span"))return;
alert("p was clicked");
});