2015-12-30 12 views
5

Hier ist mein Code in jQuery:Ein Klickereignis an mehrere Elemente gleichzeitig anhängen?

$('.paragraph, .section, .heading').on('input', function (e) { 
    localStorage.setItem($(this).attr('id'), $(this).text()); 
}); 

Gibt es eine JavaScript-Äquivalent, wo ich alle Ereignisse auf einmal anschließen können?

+0

(Element) .addEventListener ('click', function() {}); in einer Iteration –

+0

Die Antwort ist nein, es gibt kein Äquivalent in einfachem JavaScript, müssten Sie über die Elemente iterieren und Ereignishandler an jedes Element separat anhängen – adeneo

+0

Ich würde einen Listener auf einem Elternelement (Körper, wenn nötig) und dann verwenden überprüfen Sie das geklickt Element wie so 'document.body.addEventListener ('Klick', function (e) { \t var target = e.target, \t \t class = target.className; \t if (Klasse === 'Absatz' || Klasse === 'Abschnitt' || Klasse === 'Überschrift') { \t \t localStorage.setItem (target.id, target.innerText); \t } \t e.stopPropagation() }); ' es performanter ist weniger Ereignisse zu haben .. diese auf übernimmt die Elemente haben nur eine Klasse jeden .. vielleicht gibt es noch effizientere Möglichkeiten, um die richtige Klasse Überprüfung, zum Beispiel mit einem Array .. – Can

Antwort

13

Sie könnten querySelectorAll mit mehreren Elementen Selektoren verwenden, dann die Ereignis-Listenerzu jedem

var elements = document.querySelectorAll(".a, .b"); 
for (var i = 0; i < elements.length; i++) { 
    elements[i].addEventListener("click", function() { 
    console.log("clicked"); 
    }); 
} 
+0

Dies ist der schnellste Weg zu tun, was OP in reinem Javascript will –

2

Angenommen, Sie klicken Ereignis auf mehrere Elemente hinzufügen möchten, dann setzen Sie ihre Klassennamen wie zum Beispiel demo

demos= document.getElementsByClassName('demo'); 
for (var i = 0; i < demos.length; i++) { 
    demos[i].addEventListener('click',redirect,false); 
} 
function redirect(){ 
    alert(this.id); 
} 

WORKING FIDDLE

0

Kredit geht an:

Javascript click event listener on multiple elements and get target ID

articles = document.getElementsByTagName('button'); 
 
for (var i = 0; i < articles.length; i++) { 
 
    articles[i].addEventListener('click',redirect,false); 
 
} 
 
function redirect(){ 
 
    alert(this); 
 
}
<button></button> 
 
<button></button>

+0

er fragte nach Javascript gleichwertig, gab man ihm jquery: P –

+0

Nur pures Javascript ... – Hemal

+2

Das ist immer noch jQuery lol ... –

0

Read Jquery Multiple Selector

$("div, span, p.myClass").css("border", "3px solid red");
div, span, p { 
 
    width: 126px; 
 
    height: 60px; 
 
    float: left; 
 
    padding: 3px; 
 
    margin: 2px; 
 
    background-color: #eee; 
 
    font-size: 14px; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<body> 
 
    
 
<div>div</div> 
 
<p class="myClass">p class="myClass"</p> 
 
<p class="notMyClass">p class="notMyClass"</p> 
 
<span>span</span>

hinzufügen 0
+1

Lesen Sie die Frage zuerst, er fragte für JavaScript gleichwertig, nicht für JQuery. – developer

Verwandte Themen