Вы можете остановить распространение события click
, если оно запущено на элементе div
, чтобы оно не достигло document
, а затем привязать обработчик события click
к элементу document
, которыйскрывает div
:
$('#cannotDoDiv').on('click', function (event) {
event.stopPropagation();
});
$(document).on('click', function () {
$('#cannotDoDiv').hide();//you can now hide the div element because it was not clicked on but a click event fired
});
Обратите внимание, что .on()
является новым в jQuery 1.7 и в этом случае аналогично использованию .bind()
.
Вы также можете отменить привязкуобработчик события click
из document
после его запуска прекращает прослушивание события, если в этом нет необходимости:
$(document).on('click.cannotDoDiv', function () {
$('#cannotDoDiv').hide();//you can now hide the div element because it was not clicked on but a click event fired
$(this).off('click.cannotDoDiv');
});
Поскольку я использовал пространство имен для события, это не будетудалите все другие обработчики событий, прикрепленные к элементу document
.Кроме того, .off()
является новым в jQuery 1.7 и в этом случае совпадает с .unbind()
.