我想在对象上触发一个不可冒泡的自定义jQuery事件.我知道我们可以使用return false或stopPropagation来防止冒泡.我想知道的是我可以触发自定义事件并指定默认情况下它不会冒泡.
这是我现在的代码
$(".abc").on("change", function () {
var e = new $.Event("datachange");
$(this).trigger(e)
});
Run Code Online (Sandbox Code Playgroud)
上面的内容触发了#abc上的datachange事件,并将事件一直冒泡.我不希望这样.我可以通过使用以下内容实现这一点.
$(".abc").on("change", function () {
var e = new $.Event("datachange");
//e.stopPropagation(); this does not work
$(this).trigger(e)
}).on("datachange", function (e) {
e.stopPropagation();
return false;
});
Run Code Online (Sandbox Code Playgroud)
我读到triggerHandler做了类似的事情,但只针对第一个匹配的元素.
有没有更好的方法来实现这一目标?
Fré*_*idi 16
你是对的,triggerHandler()只适用于集合中的第一个元素,但这不应该是一个问题,因为你构建的集合$(this)只包含一个元素.
因此,您可以安全地写:
$(".abc").on("change", function() {
$(this).triggerHandler("datachange");
});
Run Code Online (Sandbox Code Playgroud)
这样,datachange事件不会冒泡文档树.
| 归档时间: |
|
| 查看次数: |
5147 次 |
| 最近记录: |