2011-10-12 43 views

回答

0
$('body').click(function(e){ 
    //if click inside #main 
    if($(e.target).parents('#main').length || $(e.target).is('#main')){ 
    ... 
    } 
    else{ 
    //if not clicked inside #main 
    } 

}) 

检查我建议是这样的:

$('body').click(
    function(e){ 
     if ($(e.target).is('#main') || $(e.target).closest('#main').length){ 
      // main was clicked 
     } 
     else { 
      // something else was clicked 
     } 
    }); 

JS Fiddle demo

+0

非常感谢你 – user990993

+0

如果它的工作aybe u能记住我的答案:) –

0

工作

6

你有没有尝试过这样的:

$("body").children().filter(":not(#main)").click(function(){...}); 
+0

比我自己的建议更好(更干净,更简洁)... + 1! =) –

+0

也可以写在一行$(“body>:not(#main)”)。click(function(){...}); –

0

首先,你应该改变的HTML:

<body><div id="main"><p>some text</p></div></body> 

它有两个未闭合的div标签,然后大卫的回答应该做的伎俩。

0
$('body').click(function(e) { 
    if (e.target.id != 'main') { 
     console.log('outside main but within body'); 
    } else { 
     console.log('within main'); 
    } 
}); 
0
$('body').click(function() { 
    alert('clicked'); 
}); 

$('#main').click(function (event) { 
    event.stopPropagation(); 
}); 

应停止点击里面#main向下传播到body

0

尝试$("body>:not(#main)").click(function(){...});

从samn

修改如果需要现场版只是改变

$("body>:not(#main)").live("click", function(){...});