2015-12-30 14 views
5

Oto mój kod w jQuery:Dołączanie zdarzenia kliknięcia do wielu elementów naraz?

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

Czy istnieje odpowiednik JavaScript gdzie mogę dołączyć wszystkie zdarzenia na raz?

+0

(element) .addEventListener ("kliknięcie", funkcja() {}); w iteracji –

+0

Odpowiedź brzmi: nie, nie ma odpowiednika w prostym javascript, musiałbyś powtórzyć elementy i dołączyć procedury obsługi zdarzeń do każdego elementu osobno. – adeneo

+0

Chciałbym użyć jednego detektora na elemencie macierzystym (body, jeśli to konieczne), a następnie sprawdzić klikniętego elementu podobnego tak 'document.body.addEventListener ('click', function (e) {var \t target = e.target, \t \t class = target.className; \t if (klasa === 'paragraf' || klasa === 'sekcja' || klasa === 'nagłówek') { \t \t localStorage.setItem (target.id, target.innerText); \t} \t e.stopPropagation() }); ' to bardziej wydajnych mieć mniej zdarzeń .. na ten zakłada elementy mają tylko jedną klasę każdego .. może są jeszcze bardziej wydajne sposoby sprawdzania właściwej klasy, na przykład używając tablicy .. – Can

Odpowiedz

13

Można użyć querySelectorAll ze swoimi wieloma selektorów elementów, następnie dodać detektory zdarzeń do każdego jeden

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

to najszybszy sposób zrobienia tego, co OP chce w czystym javascript –

2

Załóżmy, że chcemy dodać zdarzenie click do wielu elementów, a następnie ustawić swoją nazwę klasy jak na przykład 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

zasługa:

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

poprosił o odpowiednik javascript, dałeś mu jquery: P –

+0

Czysty javascript tylko ... – Hemal

+2

To nadal 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>

+1

Przeczytaj najpierw pytanie, poprosił o odpowiednik JavaScriptu, a nie JQuery. – developer

Powiązane problemy