根据条件排除点击事件?

时间:2010-12-01 15:14:49

标签: jquery events jquery-selectors conditional-statements

我正在尝试为jQuery事件设置条件。我有一个输入元素和一个div。我想检测页面上任何地方的点击并执行该方法,但仅当点击不在输入或div上时。

5 个答案:

答案 0 :(得分:12)

使用jQuery click()或live()函数,然后使用jQuery is()函数检查click事件的目标。

  1. 绑定文档上的点击事件
  2. 如果目标未输入或div继续
  3. $(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

答案 1 :(得分:4)

这样的事情应该有效。

$('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 :(得分:2)

基本上将点击处理程序分配给页面主体,然后测试事件的目标元素,以查看该目标元素的id是否与您的div或输入匹配。

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

  if (!(targetElementId  == "yourDivID" || targetElementId == "yourinputId"))
  {
    // your event code here.
  }
});

答案 3 :(得分:2)

var input = $("#yourInput")[0];
var div = $("#yourDiv")[0];

$(document.body).click(function(e) {
   switch ( e.target ) {
       case input: case div: return;
   }
   yourMethod();
});

答案 4 :(得分:1)

使用通配符排除特定元素的示例:

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

});