自定义事件由同一事件处理程序触发缓存

Custom event fired it's caching by the same event handler

本文关键字:程序 缓存 事件处理 事件 自定义      更新时间:2023-09-26

我创建了一个名为 foo 的自定义事件,并在代码中注册了这两个侦听器

var $selector1 = $('#foocontainer .item');
var $selector2 = $('#blah .item');
$(document).on('foo',$selector1, 
    function(){ console.log('blah');
 });
$(document).on('foo',$selector2, 
   function(){ alert('testing 123...'); 
});

如您所见,选择器和事件处理程序是不同的,为什么当我触发事件时,捕获它的事件处理程序总是第一个?我建议每个选择器都有自己的事件处理程序,因此不应该混淆。

我使用函数触发器触发了事件

$('.item').click(function(){
    $(this).trigger('foo');
});

我错过了什么吗?

jQuery.on 需要一个字符串选择器,你正在传递给它一个 jQuery 对象:

$(document).on('foo', $selector1, 
    function(){ console.log('blah');
 });

您可以通过将 on 语句更改为以下内容来解决此问题:

$(document).on('foo', "#d1", function () {
   // do something
});

js小提琴