假设我们有一个HTML的结构是这样掌握事件冒泡
<div id="container">
<div id="nested">
<span id="someElement"></span>
</div>
</div>
...,我们的目标是对#container
仅事件侦听器!所以,我们绑定监听器(jQuery代码)
$("#container").on('click', function(event) {
alert("container was clicked");
});
当然这样的作品,但我的这种方法的问题是,由于事件通常冒泡,那听众也会如果我们实际点击#nested
或#someElement
火。我目前的解决方案仅处理click当#container
点击与event.target
$("#container").on('click', function(event) {
if(this === event.target) {
alert("container was clicked");
}
});
我的问题比较this
:这算是“最佳实践”?有没有更好的方式与jQuery完成相同的结果“开箱即用”?
例子在行动:http://jsfiddle.net/FKX7p/
IMO,这是最好的做法。 – VisioN
@jSang:实际上,内部元素在点击时没有任何听众。这是否被认为是最佳做法?绑定每个元素只是为了阻止传播? –
我也没有看到任何更好的方法,事实上,我打算将其作为答案发布,直到我看到您已经拥有该代码。 –