Pobieranie selectora na rzecz którego wywołujemy metodę on() przy wykorzystaniu selectora dziecka

Dzisiaj odkryłem małą ciekawostkę dotyczącą funkcji on() w jQuery. Otóż rozważmy następujący kod:

<div class="container">
    <a href="#" class="click_element">CLICK</a><br/>
</div>
$("div.container").on("click", "a.click_element", function (event) {
    $(event.delegateTarget).append("delegateTarget dodaje tekst...<br/>");
    $(this).closest('div.container').append("Potem metoda closest()<br/>");
    $(this).parents('div.container').append("Można też przy pomocy parents().parent()<br/>");
    return false;
});

Okazuje się, że najlepiej korzystać z parametru eventu event.delegateTarget – jest to dokładnie funkcjonalność do której został stworzony. Jeśli dobrze to zrozumiałem, to przekazujemy w ten sposób selektor przy każdym wywołaniu tej przypiętej funkcji, czyli nic to nie kosztuje. Jednak przy bardziej skomplikowanych i zagnieżdżonych układach HTML’u metody closest() i parents() mogą zająć więcej czasu wykonania.

Link do fiddle’a: http://jsfiddle.net/HV8NS/.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>