根据条件排除点击事件?

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

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

  1. 绑定文档上的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输出

替代文字

这样的事情应该有效。

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

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

 $("body").click(function(evt) { var targetElementId = evt.target.id; if (!(targetElementId == "yourDivID" || targetElementId == "yourinputId")) { // your event code here. } }); 
 var input = $("#yourInput")[0]; var div = $("#yourDiv")[0]; $(document.body).click(function(e) { switch ( e.target ) { case input: case div: return; } yourMethod(); }); 

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

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