2017-02-28 2 views
0

Ich denke, es gibt eine einfache Antwort, aber ich kann nicht die richtige Lösung dafür finden. Ich weiß, dass es mit querySelectorAll gemacht werden muss, aber kann nicht herausfinden, wie man es in diesem Fall benutzt.Wie funktioniert das mit mehreren IDs

Ich habe Elemente mit ID #modalA, #modalB und #modalC. Ich möchte keinen Code duplizieren. Also ich möchte herausfinden, was ist die beste Praxis dafür?

Kann getElementByClassName nicht verwenden, da ich Änderungen an Markup nicht vornehmen kann.

var getModalsA = document.getElementById('modalA'); 
 
var getModalsB = document.getElementById('modalB'); 
 
var getModalsC = document.getElementById('modalC'); 
 

 
getModalsA.addEventListener('touchmove', function(e) { 
 

 
    e.preventDefault(); 
 

 
}, false);

+1

Mögliches Duplikat von [JavaScript click event listener on class] (http://stackoverflow.com/questions/19655189/javascript-click-event-listener-on-class) – Turnip

+3

Verwenden Sie keine IDs, verwenden Sie Klassen. –

+0

Kann getElementByClassName nicht verwenden, da ich keine Änderungen am Markup vornehmen kann. Brauchen Sie Lösung mit vorhandenem Markup. :( – Elvis

Antwort

0

Ich bin, wenn Sie nach einem kleinen Refactoring sind einfach nicht sicher.

Etwas wie:

function addListenersToElement(id) { 
    var el = document.getElementById(id); 
    el.addEventListener('touchmove', function(e) { 

     e.preventDefault(); 

    }, false); 
} 

var ids = ['modalA', 'modalB', 'modalC']; 
ids.forEach(addListenersToElement); 

ich jQuery oder ähnliches für Sachen wie diese verwenden würde (oder eine leichte Variante), aber wenn Sie die Seite nicht Markup ändern, wahrscheinlich die beste Wahl ist das Refactoring Code in kleineren Funktionen.

+0

Vielen Dank. Ihre Antwort hat für mich funktioniert. – Elvis

Verwandte Themen