jquery – 当多个事件处理程序绑定到一个元素时的优先级

前端之家收集整理的这篇文章主要介绍了jquery – 当多个事件处理程序绑定到一个元素时的优先级前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当多个事件处理程序绑定到一个元素时,如何确定首先触发哪个事件处理程序?
<script> 
$(function(){
    $(".li").find('input').click(function(){alert('li>input');});
    $(".li").click(function(){alert('li');});
    $('input').click(function(){alert('input');});
});
</script>
</head>

<body>
<ul>
<li class="li"><input type="checkBox" /><span>Hello</span></li>
<li class="li"><input type="checkBox" /><span>Hello</span></li>
<li class="li"><input type="checkBox" /><span>Hello</span></li>
</ul>
</body>

解决方法

如果两个事件处理程序绑定到完全相同的对象,它将是先来先服务。第一个附加的将首先执行。

但是,你的例子看起来有点不同。看起来你还有一个事件绑定到输入对象和其他的父亲对象。在这种情况下,事件实际发生的(在这种情况下可能是输入元素)将首先发生,然后事件将冒泡到父对象,它们将在以后发生。

如果你想停止冒泡到父母,你可以使用jQuery的event.stopPropagation(),事件不会到达父母,从不触发他们的事件处理程序。这看起来像这样:

$('input').click(function(e) {
    e.stopPropagation();
    alert('input');
});

根据stopPropagation()的jQuery文档,它不会停止同一对象上的其他事件处理程序,只有父对象上的事件处理程序,通常通过向上生成父树来获取事件。

你可以看到区别:http://jsfiddle.net/jfriend00/L33aq/

猜你在找的jQuery相关文章