Jquery 是否根据条件排除单击事件?

Jquery 是否根据条件排除单击事件?,jquery,events,jquery-selectors,conditional-statements,Jquery,Events,Jquery Selectors,Conditional Statements,我正在尝试设置jQuery事件的条件。我有一个输入元素和一个div。我想检测页面上任何地方的点击并执行该方法,但前提是点击不在输入或div上。基本上为页面主体分配一个点击处理程序,然后测试事件的目标元素,以查看该目标元素的id是否与您的div或输入匹配 $("body").click(function(evt) { var targetElementId = evt.target.id; if (!(targetElementId == "yourDivID" || targetEl

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

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

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

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

这样的办法应该行得通

$('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
    }
});
使用jQuery click()或live()函数,然后使用jQuery is()函数检查click事件的目标

  • 文档上的绑定单击事件
  • 如果目标不是input或div,则继续
  • 示例网页=>

    在示例页面上单击后的示例firebug输出


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

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

    那么,您是说您希望能够在用户单击页面时调用一个函数,而该函数不在输入或div上?使用$(event.target),因为它是由jquery事件对象规范化的。您不必规范化事件对象。jQuery为您完成了这项工作。另外,检索id属性,如:
    foo.id
    ,而不是:
    $(foo.attr(“id”)
    。在本例中,后者只是一种过激的做法。此外,我只是认为已经存在对BODY元素的内置引用-
    document.BODY
    。因此,不需要使用选择器引擎来获取它。@Mike不需要将其冒泡到文档节点。“BODY元素已经足够了。@codemonkey,很高兴这对你有用。祝你的项目好运。@Mike使用
    $(document.body)
    $(“body”)
    -第一个更好。@Šime,很有趣。为什么说$(document.body)比$(“body”)好?@Mike
    document.body
    是一个内置的引用。它在呈现页面时立即创建,并且始终存在。另一方面,
    “body”
    是一个选择器
    $(“body”)
    将使用jQuery的选择器引擎,该引擎将基于选择器进行查询。与所有查询一样,它消耗时间和处理能力。
    $(document.body).click(function(e) {
      if( !$(e.target).is("input, div") ) {
        console.log("Run function because image or div were not clicked!");
      }
    });
    
    $("#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
            }
    
    });