2016-02-15 2 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 .... 
    } 
    } 
); 
Смежные вопросы