7

我有一个html结构

<div class="abc">
  <div id="test">
    <label>Name</label>
    <input type="checkbox">
    <label>Name</label>
    <input type="checkbox">
    <label>Name</label>
    <input type="checkbox">     
  </div>
</div>

我希望当我在div id test之外单击时,可以调用特定的函数。并且在div id 测试中也不会触发任何事件,即当我单击复选框时,不会触发任何事件。

任何帮助将不胜感激。

4

9 回答 9

11

您可以通过以下代码实现它(演示:http: //jsfiddle.net/CrfCD/

$(document).ready(function(){
    $(document).click(function(e){
        if ($(e.target).is('#test,#test *')) {
            return;
        }
        else
        {
            alert("Hi");
            //Perform your event operations
        }
    });
});
于 2013-08-29T06:05:35.070 回答
2

试试这个,

 $('.abc').click(function(e){
  if(e.target.id == 'test') {
   return false;
  }
 })
于 2013-08-29T05:56:29.413 回答
2

只需使用:(演示)

JavaScript

$('.abc').click(function(e){
    alert('Do anything');
});

$('#test').click(function(e){
    e.stopPropagation();
    // Do only if anything in #test was clicked
});

e.stopPropagation()防止将事件冒泡到下一个元素

于 2013-08-29T06:03:07.337 回答
1

您可以获取点击的div的ID并检查它是否等于test。

$("body").on("click", function(e) {
    if(e.target.id != "test") {
       // do something
       return false;
    }
    else {
       return false;
    }
});
于 2013-08-29T05:56:46.643 回答
1
$(document).click(function(e){
   if(e.target.id == "test"){
     e.preventDefault();      
     e.stopPropagation();   
   }
   else{
      //your function call that you want to invoke on clicking anywhere outside of div _test_
   } 
});
于 2013-08-29T05:59:13.960 回答
1
$(document).click(function(e) {
   if(e.target.id == 'test') {
        alert( "Handler for .click() called." );
    }

});

JSFIDDLE 演示

于 2013-08-29T06:00:00.293 回答
1

HTML:

<div id="abc" onclick="getId()"> 

JavaScript:

function getId() {
    --Write your function here--
} 
于 2013-08-29T06:02:51.380 回答
1

试试这个

$(document).click(function(e) {
   if($(e.target).is("#test")){
     e.preventdefault();
     e.stopPropogation();
   } else{ 
     //call your method
   }
}
于 2013-08-29T06:23:26.720 回答
1

使用 div 焦点事件,因为它只会在 div 失去焦点时调用一次。参考帖子Div - onblur 函数

于 2013-08-29T07:19:06.363 回答