sprudelnden Können sagen wir eine HTML-Struktur wie dieseMastering Ereignis
<div id="container">
<div id="nested">
<span id="someElement"></span>
</div>
</div>
haben ... und unser Ziel ist es, ein Ereignis-Listener auf dem #container
nur zu haben! So binden wir einen Listener (jQuery-Code)
$("#container").on('click', function(event) {
alert("container was clicked");
});
Das funktioniert natürlich, aber mein Problem bei diesem Ansatz ist, dass, da Ereignisse in der Regel Blase, wird auch, dass Zuhörer feuern, wenn wir tatsächlich auf #nested
klicken oder #someElement
. Meine aktuelle Lösung zu nur den Klick behandeln, wenn die #container
geklickt wird, ist this
mit event.target
$("#container").on('click', function(event) {
if(this === event.target) {
alert("container was clicked");
}
});
Meiner Frage zum Vergleich: Ist die „best practice“ in Betracht gezogen? Gibt es einen besseren Weg mit jQuery, um das gleiche Ergebnis "out of the box" zu erreichen?
Beispiel in Aktion: http://jsfiddle.net/FKX7p/
IMO verwenden können, ist dies die beste Praxis. – VisioN
@jSang: Tatsächlich haben die inneren Elemente auf einen Klick keine Zuhörer. Wird das als beste Praxis angesehen? jedes Element binden, nur um die Ausbreitung zu stoppen? –
Ich sehe auch keinen besseren Ansatz, tatsächlich war ich dabei, das als Antwort zu posten, bis ich sah, dass Sie diesen Code bereits haben. –