2011-10-12 14 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(){...});