Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义事件触发它';s由同一事件处理程序进行缓存_Javascript_Jquery - Fatal编程技术网

Javascript 自定义事件触发它';s由同一事件处理程序进行缓存

Javascript 自定义事件触发它';s由同一事件处理程序进行缓存,javascript,jquery,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('testin

我创建了一个名为
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对象:

$(document).on('foo', $selector1, 
    function(){ console.log('blah');
 });
您可以通过将on语句更改为以下内容来解决此问题:

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

这里有一把小提琴给你:
#blah.item
#foocainer.item
的后代吗?记住,事件是泡沫。你也没有发布足够的代码让我们重现/解决(或解释)这个问题。你也不知道触发器选择器中的
这个
是什么@Adam所以我对这个问题做了一些修改,必须尝试表示它是如何被称为触发器函数的