0

有没有比这更优雅的方法来避免对后代的冒泡事件做出反应:

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

jsfiddle)。

也许 .on() 的某些参数或我缺少的其他方法?

4

2 回答 2

3

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

唯一的另一种方法要求您在子元素上绑定事件并在那里停止传播,但是,这意味着子元素需要了解可能相关或不相关的父元素。最好将其保留在单个事件中,它将对页面/应用程序的其余部分影响最小。

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

于 2013-05-14T19:04:44.560 回答
0

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

$.fn.ensureStopPropagation = function (evt) {
    evt.preventDefault();
    evt.stopPropagation();
    evt.stopImmediatePropagation();
}
于 2013-05-14T19:10:06.527 回答