使.on()处理程序只对元素自己的事件做出反应

时间:2013-05-14 18:55:44

标签: jquery javascript-events

是否有一种更优雅的方法可以避免对来自后代的冒泡事件做出反应而不是:

$('#element').on('click', function (e) {
    if (e.target != this)
        return;
    alert("it's a-me!");
});

jsfiddle)。

可能是.on()或其他一些我缺少的方法的参数?

2 个答案:

答案 0 :(得分:3)

不,这几乎是处理它的最优雅方式。

唯一的另一种方法要求你绑定子元素上的事件和那里的stoppropagation,这意味着子元素需要知道可能相关或不相关的父元素。最好只保留在单个事件中,它对页面/应用程序的其余部分影响最小。

这是处理它的最佳方式的另一个原因是它不会破坏任何委托给所述子元素的事件。

答案 1 :(得分:0)

我觉得还不够。 查看https://myprettycms.codeplex.com/SourceControl/latest#461106 方法:

$.fn.ensureStopPropagation = function (evt) {
    evt.preventDefault();
    evt.stopPropagation();
    evt.stopImmediatePropagation();
}