nie trudne do zrobienia, ponieważ jQuery już przechowuje wszystkie swoje programy obsługi zdarzeń jako data()
na samym elemencie. Możesz uzyskać (i modyfikować) ten obiekt przez .data().events
.
Spróbuj$("#portalLink a").data().events.click = null
w konsoli teraz wyłączyć „Stack Exchange Network” listy rozwijanej w lewym górnym rogu tej strony.
Teraz można łatwo zapisać odniesienie do koparki z:
events._click = events.click;
events.click = null;
a następnie przywrócić je za pomocą:
events.click = events._click;
events._click = null;
zauważyć, że nie wyłącza zdarzenia, które są związane poprzez .delegate()
lub .live()
, ponieważ działają na zasadzie propagacji/propagacji zdarzeń. Aby wyłączyć te, jak również, po prostu związać nowy program obsługi, który blokuje rozmnażanie się do elementów przodków:
events._click = events.click;
events.click = null;
// Block .live() and .delegate()
$("#el").click(function (e) {
e.stopPropagation();
});
Ty nawet nie trzeba rozwiązać tę funkcję bloker kiedy nadszedł czas, aby umożliwić teleskopowe ponownie, ponieważ events.click = events._click
zastąpi funkcja po prostu związana ze wszystkimi starymi modułami obsługi.
Możesz zrewidować swoje podejście - jeśli chcesz przycisk nie działa , wyłącz to. Oznacza to wyraźnie, że przycisk jest wyłączony. To znacznie prostsze, prostsze i bardziej spójne niż obejście domyślnego zachowania. Dlaczego nie chcesz wyłączać przycisku? –
Ponieważ, AFAIK, wyłączone przyciski nie mogą być stylizowane. – Ovesh