<input type="button" onclick="alert('hello world');">
W ten sposób obsługiwane są zdarzenia inline. Głównym powodem jest to zły pomysł jest, aby jasno określić separation of concerns.
HTML - Structure of your page
JS - Your page functionality
To spowoduje mniej problemów utrzymania w dłuższej perspektywie i przy wadze systemowych w rozmiarze.
Co się stanie, jeśli na stronie znajduje się 100 przycisków i chcesz usunąć zdarzenie kliknięcia lub zmienić je dla wszystkich z nich. To zdecydowanie byłby koszmar. Zdefiniowanie pojedynczego zdarzenia można zdefiniować tylko w przypadku powiązania go w linii.
Po przeniesieniu się do oddzielnego pliku masz dużą elastyczność i możesz po prostu wprowadzić niewielką zmianę, która wpłynie na wszystkie elementy na stronie.
Tak więc drugie podejście jest zawsze lepsze. i do zrobienia.
Poprzez zdefiniowanie zdarzeń jak poniżej
$('#clickme').on("click",function(){alert('hello world');});
ty HTML
wygląda czysto sans jakiejkolwiek funkcjonalności i usuwa szczelne sprzęgło.
W przypadkach, w których dodano dynamicznie, faktyczne zdarzenia zawsze działają, ale istnieje pojęcie o nazwie Delegowanie zdarzeń. Dołączasz wydarzenie do kontenera nadrzędnego, który jest zawsze obecny na stronie i wiąże to wydarzenie. Gdy zdarzenie wystąpi później w elemencie, bańka zdarzenia do rodzica, który obsługuje wydarzenie dla Ciebie.
Dla takich przypadków wiążą wydarzenia za pomocą .on
przechodzącą w selektora
$(document).on('click', '#clickme', function() {
pamiętać, że wiązanie wiele zdarzeń do dokumentu jest złym pomysłem. Zawsze możesz użyć closestStaticAncestor
, aby powiązać zdarzenia.
Wiele dobrych odpowiedzi tutaj, dzięki wszystkim! – olli
[przejdź tutaj i możesz go znaleźć] (https://stackoverflow.com/questions/12627443/jquery-click-vs-onclick?rq=1) To jest to samo pytanie – Chow