Исключить событие клика по условию?
Я пытаюсь установить условия для события jQuery. У меня есть элемент ввода и div. Я хочу обнаружить клик в любом месте страницы и выполнить этот метод, но только если клик не находится на входе или div.
Ответы
Ответ 1
Используйте функции jQuery click() или live(), а затем проверьте цель события click с помощью функции jQuery is().
- связать событие click в документе
- если цель не введена или div continue
.
$(document.body).click(function(e) {
if( !$(e.target).is("input, div") ) {
console.log("Run function because image or div were not clicked!");
}
});
Пример webpage = > http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-document-click-exclusion.html
Пример вывода firebug после нажатия на странице примера
![alt text]()
Ответ 2
Что-то вроде этого должно работать.
$('body').click(function(event){ // body click
var $target = $(event.target); // click target
if($target.is('#mydiv, #myinput')) { // click target is div or input
$target.click(); // click div or input
}
});
Ответ 3
В основном назначьте обработчик кликов в теле страницы, затем проверьте целевой элемент события, чтобы узнать, соответствует ли идентификатор этого целевого элемента вашему div или вашему входу.
$("body").click(function(evt) {
var targetElementId = evt.target.id;
if (!(targetElementId == "yourDivID" || targetElementId == "yourinputId"))
{
// your event code here.
}
});
Ответ 4
var input = $("#yourInput")[0];
var div = $("#yourDiv")[0];
$(document.body).click(function(e) {
switch ( e.target ) {
case input: case div: return;
}
yourMethod();
});
Ответ 5
Пример исключения определенных элементов с помощью шаблона:
$("#mydiv li").click(function(e){
var Target = new String(e.target.id);
// prevent action when a element with id containing 'img_' is clicked
if( !Target.match(/img_/ )) {
// do something
}
});