假设我们有以下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
,那么监听器也会触发。我目前的解决方案是仅在单击#container
时处理单击事件,即将this
与event.target
进行比较。$("#container").on('click', function(event) {
if(this === event.target) {
alert("container was clicked");
}
});
我的问题是:这被认为是“最佳实践”吗?有没有更好的使用jQuery来实现同样的结果而不需要额外的工作?