根据条件排除点击事件?

发布于 2024-10-05 09:12:48 字数 83 浏览 6 评论 0原文

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

I'm trying to set conditions on a jQuery event. I have an input element and a div. I want to detect a click anywhere on the page and to execute that method but only if the click is not on the input or div.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

浮生面具三千个 2024-10-12 09:12:48

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

  1. 则在文档上绑定单击事件
  2. 如果目标未输入或 div continue ,

$(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 输出

“替代文字”

Use the jQuery click() or live() functions and then check the target of the click event using the jQuery is() function.

  1. bind click event on document
  2. if the target is not input or div continue

.

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

Example webpage => http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-document-click-exclusion.html

Example firebug output after clicking around on example page

alt text

冰火雁神 2024-10-12 09:12:48

像这样的东西应该有效。

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

Something like this should work.

$('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
    }
});
岁月打碎记忆 2024-10-12 09:12:48

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

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

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

Basically assign a click handler to the body of the page, then test the target Element of the event to see if the id of that target element matches your div or your input.

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

  if (!(targetElementId  == "yourDivID" || targetElementId == "yourinputId"))
  {
    // your event code here.
  }
});
阳光的暖冬 2024-10-12 09:12:48
var input = $("#yourInput")[0];
var div = $("#yourDiv")[0];

$(document.body).click(function(e) {
   switch ( e.target ) {
       case input: case div: return;
   }
   yourMethod();
});
var input = $("#yourInput")[0];
var div = $("#yourDiv")[0];

$(document.body).click(function(e) {
   switch ( e.target ) {
       case input: case div: return;
   }
   yourMethod();
});
朱染 2024-10-12 09:12:48

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

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

});

Example to exclude specific elements using a wildcard:

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

});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文