addEventListener sur NodeList
Ne NodeList soutien addEventListener. Si non quelle est la meilleure façon d'ajouter de la EventListener à tous les nœuds de la NodeList. Actuellement, je suis en utilisant l'extrait de code comme ci-dessous montrent, est-il une meilleure façon de le faire.
var ar_coins = document.getElementsByClassName('coins');
for(var xx=0;xx < ar_coins.length;xx++)
{
ar_coins.item(xx).addEventListener('dragstart',handleDragStart,false);
}
source d'informationauteur Dinesh P.R.
Vous devez vous connecter pour publier un commentaire.
Il n'y a aucun moyen de le faire sans une boucle sur chaque élément. Vous pouvez, bien sûr, écrire une fonction pour le faire pour vous.
ou plus spécialisés version:
Et, si vous ne posez pas de questions sur jQuery, c'est le genre de trucs que jQuery est particulièrement bon à:
En fait, il y est une manière de le faire sans une boucle:
Et de cette façon est utilisé dans un de mes one-liner bibliothèques d'assistance - nanoQuery.
Du mieux que je pouvais trouver était:
Remarque que cela utilise ES6, donc assurez-vous de transpile!
dans l'es6, vous pouvez faire un tableau à partir d'nodelist, à l'aide du Tableau.à partir, par exemple,
ou il suffit d'utiliser la flèche fonctions
L'exemple le plus simple est d'ajouter cette fonctionnalité à
NodeList
Maintenant vous pouvez le faire:
De la même manière, vous pouvez faire un
forEach
boucleÀ l'aide de:
MODIFIER : notez que NodeList.le prototype.forEach a existé depuis novembre 2016 dans FF. No IE soutien
Je suppose, une autre option consisterait à définir
addEventListener
surNodeList
à l'aide deObject.defineProperty
. De cette façon, vous pouvez traiter la NodeList comme vous le feriez d'un seul Nœud.Comme un exemple, j'ai créé un jsfiddle ici: http://jsfiddle.net/2LQbe/
Le point clé est: est-ce