Na mojej stronie mam wiele różnych elementów, które reagują na zdarzenia kliknięć. Są sytuacje, w których muszę zablokować wszystkie kliknięcia na podstawie niektórych flag globalnych. Czy istnieje sposób, w jaki mogę dokonać tego sprawdzenia w scentralizowanej lokalizacji?jQuery: Zatrzymaj wszystkie zdarzenia kliknięcia, zanim się to stanie?
Teraz w sprawdzasz za flagą, na przykład każdego zdarzenia:
var canClick = false; // Global flag
// Sample click event:
$("#someDiv").click(function(){
if(!canClick) return;
// Some stuff ...
});
Co chciałbym zrobić, to mieć jeden element, który pułapki wszystkich zdarzeń kliknij przed innych elementów.
Próbowałem zrobić to na dokumencie, ale te zdarzenia występują tylko po innych zdarzeniach kliknięcia.
Przykład:
$("#someDiv").click(function(){ console.log("someDiv click"); });
$(document).click(function(){ console.log("Document click"); });
// When I click on the someDiv element it prints:
> someDiv click
> Document click
Próbowałem też wprowadzenie pełnego div ekranu na szczycie wszystko i za pomocą tego do wydarzeń pułapki, ale problemem było, że żaden z kliknięć były propagowane przez ten pełni div ekranu. Nie chcę też polegać na tworzeniu dodatkowych elementów do pułapkowania kliknięć, ponieważ wydaje się to trochę hackowate.
Czy mogę zastąpić funkcję kliknięcia jQuery, aby móc umieścić tam moje małe sprawdzenie?
Czy jest coś oczywistego, czego tu brakuje?
Dzięki za pomoc.
Ahh genialny! Dziękuję bardzo, proszę pana. Działa w przeglądarce Chrome 11, jest to jedyna przeglądarka, której potrzebuję, aby była kompatybilna. Twoje zdrowie. – nebs
Dla każdego, kto potrzebuje zgodności z różnymi przeglądarkami, nie jest to obsługiwane przez IE <9 – opsb