Mai mult
testați dacă event handler este legat la un element în jQuery
Este posibil pentru a determina dacă un element are un handler click, sau o schimbare handler, sau orice fel de tratare a evenimentului legat la acesta folosind jQuery?
În plus, este posibil să se determine cât de multe click stivuitoare (sau orice fel de event handlers) are pentru un anumit tip de eveniment, și ce funcții sunt în stivuitoare eveniment?
191
11
Puteți obține aceste informații de la cache-ul de date.
De exemplu, să le conectați la consola (firebug, ie8):
sau repeta-le:
O altă modalitate este, puteți utiliza următoarele bookmarklet, dar, evident, acest lucru nu ajuta la runtime.
Uciderea în afara obligatoriu atunci când aceasta nu există încă nu este cea mai bună soluție, dar pare destul de eficient! A doua oară când "clic", puteți ști cu certitudine că aceasta nu va crea un duplicat obligatorii.
Prin urmare, utilizarea die() sau desface() astfel:
sau
sau în ultimii versiuni jQuery:
Am scris un plugin numit hasEventListener care face exact asta :
http://github.com/sebastien-p/jquery.hasEventListener
Sper că acest lucru vă ajută.
Această soluție nu mai este susținută de jQuery 1.8 după cum putem citi pe blog aici:
Deci, ar trebui să dezlegi/rebind sau pur și simplu, utilizați un boolean pentru a determina dacă evenimentul dvs. ca fost atașat sau nu (care este, în opinia mea, cea mai bună soluție).
Cred că acest lucru ar putea fi actualizat cu jQuery 1.9.*
Am'm găsirea acesta este singurul lucru care funcționează pentru mine în acest moment:
Am scris un mic plugin numit "o dată" care face asta:
Și pur și simplu:
Pentru jQuery 1.9+
Am nevoie de
[0]
serie literal.Eu nu't cred că hasEventListener plugin menționat se va ocupa de evenimente personalizate, de exemplu
De asemenea, cel puțin în jQuery 1.5 cred că trebuie să fii atent, folosind $(țintă).date de('evenimente'), pentru că acesta revine în mod diferit pentru evenimente care au fost expecteded la obiecte ca mai sus.
Aveți nevoie pentru a face ceva de genul:
Eu sunt, folosind acest tip de abordare și funcționează, dar se simte un pic ca sunt la mila de jquery interne și că într-adevăr nu ar trebui't face!
Am avut aceeași nevoie & rapid patch-uri un cod existent pentru a fi capabil de a face ceva de genul asta:
Acesta funcționează pentru eveniment delegația prea:
Acesta este disponibil aici : jquery-handler-toolkit.js
Cu referire la SJG's a răspunde și de la W3Schools.com
Acest lucru vă oferă:
sau
Aceasta funcționează și pentru mine: $('#profile1').attr('onclick')