Исключить событие клика в зависимости от условия? - PullRequest
11 голосов
/ 01 декабря 2010

Я пытаюсь установить условия для события jQuery.У меня есть элемент ввода и div.Я хочу обнаружить клик в любом месте на странице и выполнить этот метод, но только если клик не на входе или div.

Ответы [ 5 ]

12 голосов
/ 01 декабря 2010

Используйте функции jQuery click () или live (), а затем проверьте цель события click с помощью функции jQuery is ().

  1. событие bind click для документа
  2. если цель не введена или div продолжается

.

$(document.body).click(function(e) {
  if( !$(e.target).is("input, div") ) {
    console.log("Run function because image or div were not clicked!");
  }
});

Пример веб-страницы => http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-document-click-exclusion.html

Пример вывода firebug после щелчка по примерустраница

alt text

4 голосов
/ 01 декабря 2010

Как-то так должно работать.

$('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
    }
});
2 голосов
/ 01 декабря 2010
var input = $("#yourInput")[0];
var div = $("#yourDiv")[0];

$(document.body).click(function(e) {
   switch ( e.target ) {
       case input: case div: return;
   }
   yourMethod();
});
2 голосов
/ 01 декабря 2010

В основном назначьте обработчик клика для тела страницы, затем протестируйте целевой элемент события, чтобы увидеть, соответствует ли идентификатор этого целевого элемента вашему div или вашему вводу.

$("body").click(function(evt) {
  var targetElementId = evt.target.id;

  if (!(targetElementId  == "yourDivID" || targetElementId == "yourinputId"))
  {
    // your event code here.
  }
});
1 голос
/ 10 ноября 2013

Пример исключения определенных элементов с использованием подстановочного знака:

$("#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
        }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...