2015-10-23 52 views
0

我想创建customEvent。例如,我有一些元素,每个人都在听这个事件。当我点击其中一个我想触发我的customEvent。如何做到这一点?Javascript自定义事件 - 触发所有听众

例子:

var customEvent = new Event('customEvent'); 

var $ul = $('ul'); 

var $markers = $('#map').find('.markers'); 

// UL>LI 
$ul.delegate('click', 'li', function(){ 
    customEvent.trigger(); 
}); 

$ul.delegate('customEvent', 'li', function(){ 
    $ul.find('li').removeClass("active"); 

}); 

// MAP MARKERS 
$markers.on('click', 'li', function(){ 
    customEvent.trigger(); 
}); 

$markers.on('customEvent', function(){ 
    // do sth 
}); 

回答

3

它的简单,你需要使用.trigger()功能

执行附着在特定的事件类型匹配的元素的所有处理程序和行为。

脚本

ele.on('click', function() { 
     $(this).trigger('customEvent'); 
     //Or, $(this).trigger(customEvent); 
}); 
+0

它只会在此元素或所有听众触发该事件? – Sko

+0

它会触发当前唯一的元素,如果要触发所有元素使用'ele.trigger(“自定义事件”);' – Satpal

+0

但我有很多diffrence元素,我不是stroing他们进入一个变量。我可以使用ele.trigger(),但是我需要写它ele1.trigger(),ele2.trigger()。我不想那么做。以自我触发事件是否可行? – Sko