自定义事件通过相同的事件处理程序触发了它的缓存

时间:2013-10-28 17:45:22

标签: javascript jquery

我创建了一个名为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');
});

我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

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

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

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

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

jsFiddle