2016-02-15 39 views
-2

我在我的項目中有相同的結構!沒有循環的多事件監聽器

<!-- menu structure--> 
    <nav class="menu"> 
     <a class="trigger" href="#">item</a> 
     <a class="trigger" href="#">item</a> 
     <a class="trigger" href="#">item</a> 
     <a class="trigger" href="#">item</a> 
     <a class="trigger" href="#">item</a> 
    </nav> 

我想一個事件偵聽器添加到所有的觸發,但是我發現在使用循環的解決方案,這裏是JS

menuitens = document.querySelectorAll('.trigger'); 
menuitens.addEventListener("click", function(){}); 
+0

但是你總是要循環。注意:你可以使原型函數循環爲免費 – Hydro

+0

你需要使用循環!我想你想要一行像jQuery一樣的東西,但jQuery也在內部使用一個循環。 – A1rPun

+2

你應該使用jQuery。它看起來像這樣:''('。trigger')。on('click',function(){...});' – ventaquil

回答

0

有一個單一的事件偵聽器只是將其綁定到容器而不是:

document.querySelector('.menu').addEventListener('click', function(e) { 
    e.preventDefault(); 

    if (!e.target.classList.contains('trigger')) return; 

    alert('.trigger clicked'); 
}); 

https://jsfiddle.net/t6frderh/

0

你可以聽所有的點擊甚至ts對容器元素:

document.querySelector(".menu").addEventListener(
    'click', 
    function(e) 
    { 
    if (e.target.classList.contains('target')) 
    { 
     // do stuff .... 
    } 
    } 
);