javascript addEventListener auswählen, ohne Kinder
Ich müssen, javascript zu verwenden, die nur für dieses Projekt. Sorry, keine jQuery (ich schäme mich auch).
Ich bin das hinzufügen einer addEventListener
an ein div. "Problem" ist, dass es gilt für alle seine Kinder, auch.
Gibt es eine Möglichkeit, dies zu vermeiden, und haben den Hörer nur für das div?
Thankd im Voraus.
mein code sieht wie folgt aus:
document.getElementById(myObj.id).addEventListener("mousedown", myObjDown, false);
function myObjDown() {
//do stuff here
}
- Es ist eigentlich nicht hinzufügen das Ereignis für die Kinder (ich vermute, da Sie noch nicht gezeigt-code). Was passiert, ist das event-bubbling. Sie binden wollen, die Veranstaltung in der capturing-phase Abbrechen und die sprudelnden.
element1.addEventListener('click',doSomething,true);
undevent.cancelBubble = true;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie sagen, welches element das Ereignis tatsächlich ausgelöst durch das Lesen
event.target
in Ihren Rückruf.Die andere option wäre es, die Handler gebunden, um die untergeordneten Elemente zu verhindern, dass das Ereignis vom erreichen der übergeordneten handler, aber das ist mehr Arbeit, und möglicherweise verbirgt Ereignisse von Dingen, die vielleicht tatsächlich hören für Sie über die Eltern.
Update
Ihre Beispiel-code, Sie sollten in der Lage sein, dies zu tun.
Auch als Allgemeinen Hinweis Bedenken Sie, dass, keine wenn dies funktioniert auf IE < 9, weil
addEventListener
wird nicht unterstützt auf diese.Können Sie die Ereignis-Eigenschaft currentTarget
Mehr details: https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget
Hier eine alternative, die hält Ihre myObjDown Funktion im Einklang mit einer typischen event-handler. (mit e.Ziel-als Verweis auf die Ereignis-aufrufen-element)
Es wurde vorgeschlagen, dass ..
diese Methode kann Ursache von Speicherlecks mit Versionen von einigen Browsern. Wenn jemand Erfahrungen mit diesem oder hat wertvolle Erkenntnisse. Bitte kommentieren.
eine alternative, in dieser Hinsicht wäre