$(document).click(function(evt) {
var target = evt.currentTarget;
var inside = $(".menuWraper");
if (target != inside) {
alert("bleep");
}
});
Я пытаюсь выяснить, как сделать его так, чтобы, если пользователь нажимает за пределами определенного отделения (menuWraper), оно инициировало событие.. Я понял, что могу просто заставить каждый щелчок запустить событие, затем проверить, является ли нажатый currentTarget тем же как объект, выбранный из $ (" .menuWraper"). Однако это не работает, currentTarget является объектом HTML(?) и $ (" .menuWraper"), Объект является объектом? Я очень смущен.
Просто вызовите элемент menuWraper
event.stopPropagation ()
, чтобы его событие щелчка не всплывало в документ
.
Попробуйте: http://jsfiddle.net/Py7Mu/
$(document).click(function() {
alert('clicked outside');
});
$(".menuWraper").click(function(event) {
alert('clicked inside');
event.stopPropagation();
});
В качестве альтернативы вы можете вернуть false;
вместо использования event.stopPropagation ();
попробуйте эти ..
$(document).click(function(evt) {
var target = evt.target.className;
var inside = $(".menuWraper");
//alert($(target).html());
if ($.trim(target) != '') {
if ($("." + target) != inside) {
alert("bleep");
}
}
});
Наиболее распространенное приложение здесь закрывается при щелчке по документу, но не тогда, когда он исходил из этого элемента, для этого вы хотите остановить всплытие, например:
$(".menuWrapper").click(function(e) {
e.stopPropagation(); //stops click event from reaching document
});
$(document).click(function() {
$(".menuWrapper").hide(); //click came from somewhere else
});
Здесь все делали предотвращает щелчок из всплытия (через event.stopPrpagation ()
), когда он исходил из элемента .menuWrapper
. Если это не , то щелчок пришел откуда-то еще и по умолчанию переместится в документ
, если он попадает туда, мы скрываем те .menuWrapper
элементов.
Я не думаю, что документ вызывает событие щелчка. Попробуйте использовать элемент body для захвата события щелчка. Возможно, нужно проверить это ...