На моей странице у меня есть много различных элементов, которые реагируют на события кликов. Есть моменты, когда мне нужно блокировать все клики на основе какого-либо глобального флага. Есть ли способ сделать эту проверку в централизованном месте?
Сейчас в каждом событии я проверяю флаг, например:
var canClick = false; // Global flag
// Sample click event:
$("#someDiv").click(function(){
if(!canClick) return;
// Some stuff ...
});
Что бы я хотел сделать, это один элемент, который перехватывает все события щелчка перед любыми другими элементами.
Я попытался сделать это на документе, но эти события происходят только после других событий click.
Пример:
$("#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
Я также попытался поместить полный экран div поверх всего и использовать это для ловушек событий, но проблема заключалась в том, что ни один из кликов не распространялся через этот полноэкранный div. Также я не хочу полагаться на создание дополнительных элементов для ловушки кликов, поскольку он немного взломан.
Могу ли я перезаписать функцию jQuery click, чтобы я мог поместить туда свою небольшую проверку?
Есть ли что-то очевидное, что я здесь отсутствует?
Спасибо за любую помощь.