其他阻止内部事件处理程序冒泡的方法,jQuery

时间:2015-03-23 20:00:34

标签: javascript jquery

显示示例代码here。这是有效的,但我想知道是否有另一种方法可以做到这一点,而不必创建一个事件处理程序,唯一的目的是防止冒泡消息,直到它的祖先。

基本上我希望代码执行的操作是:span标记不是,然后调用p标记的事件处理程序。另一种措辞方式:span标记 的任何地方,都不要为p标记调用事件处理程序。

我试图this,但它没有用。点击span标签时,它仍然会冒泡,这就是我想要阻止的内容

2 个答案:

答案 0 :(得分:3)

jsFiddle demo

$("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"); 
});