Staram się zrozumieć tę szczególną różnicę między bezpośrednich i delegowanych obsługi zdarzeń przy użyciu jQuery .on () metody . W szczególności ostatnie zdanie w tym akapicie:
Gdy
selector
podano a, program obsługi zdarzeń jest określany jako delegowany . Procedura obsługi nie jest wywoływana, gdy zdarzenie występuje bezpośrednio w powiązanym elemencie, ale tylko w przypadku elementów podrzędnych (elementów wewnętrznych), które pasują do selektora. jQuery przesuwa zdarzenie z miejsca docelowego zdarzenia do elementu, do którego jest dołączona procedura obsługi (tj. najbardziej wewnętrzna do najbardziej zewnętrznego elementu) i uruchamia procedurę obsługi dla wszystkich elementów wzdłuż tej ścieżki pasujących do selektora.
Co to znaczy „uruchamia procedurę obsługi dla dowolnych elementów”? Zrobiłem stronę testową, aby poeksperymentować z tą koncepcją. Ale obie poniższe konstrukcje prowadzą do tego samego zachowania:
$("div#target span.green").on("click", function() {
alert($(this).attr("class") + " is clicked");
});
lub,
$("div#target").on("click", "span.green", function() {
alert($(this).attr("class") + " is clicked");
});
Może ktoś mógłby odnieść się do innego przykładu, aby wyjaśnić tę kwestię? Dzięki.