jQuery: die Bindung eines einzigen Ereignis-listener, die Ereignisse behandeln kann, seine Kinder

Stieß ich auf eine Frage, auf die ich nicht wissen, die Lösung für.

Nehme an, dass ich das HTML-markup (dynamisch vom server generiert oder einfach eine statische Datei):

<ul class="myList">
<li><a href="page1.html">Page 1</a></li>
<li><a href="page2.html">Page 2</a></li>
<li><a href="page3.html">Page 3</a></li>
<li><a href="page4.html">Page 4</a></li>
<li><a href="page5.html">Page 5</a></li>
<li><a href="page6.html">Page 6</a></li>
<!-- ... -->
<li><a href="page1000.html">Page 1000</a></li>
</ul>

Ich soll binden Sie einen click-Ereignishandler, um die <a> tag. Normalerweise würde ich schreiben,

$('.myList').find('a').click(function() {});  /* Or something similar */

würde führen implizite iteration auf alle anchor-tags zu binden, ein click-Ereignis für jeden von Ihnen. Allerdings wurde mir gesagt, dass dies ist ein teurer Vorgang.

Wurde ich gefragt, ob es irgendeine Möglichkeit zur Befestigung nur eines Ereignis-Listeners (auf dem ul-tag) und verwenden Sie Ereignis-bubbling, um herauszufinden, welche Anker-tag geklickt wurde. Ich habe noch nie begegnet, so etwas wie dieses, so wusste ich nicht die Antwort. Offenbar gibt es eine Antwort. Weiß jemand, wie eines einzigen Ereignis-listener auf ein element und haben es herauszufinden, welches Kind-element wurde angeklickt? (Ich immer noch auf event.preventDefault() verhindern, dass die Standard-click-Ereignis.)

InformationsquelleAutor Stephen | 2011-06-02
Schreibe einen Kommentar