2015-10-23 66 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