我有html,例如
<body><div id="main"><p>some text</p></div></div></div></body>
当你点击外部#main时如何在jquery上制作,但在标记体内部有一些动作?
$(":not(#main)").click({..});
不工作
答案 0 :(得分:6)
你试过这个:
$("body").children().filter(":not(#main)").click(function(){...});
答案 1 :(得分:1)
$('body').click(function(e){
//if click inside #main
if($(e.target).parents('#main').length || $(e.target).is('#main')){
...
}
else{
//if not clicked inside #main
}
})
答案 2 :(得分:0)
我建议像:
$('body').click(
function(e){
if ($(e.target).is('#main') || $(e.target).closest('#main').length){
// main was clicked
}
else {
// something else was clicked
}
});
答案 3 :(得分:0)
首先,您应该将Html更改为:
<body><div id="main"><p>some text</p></div></body>
它有两个未闭合的div标签,然后大卫的回答应该可以解决问题。
答案 4 :(得分:0)
$('body').click(function(e) {
if (e.target.id != 'main') {
console.log('outside main but within body');
} else {
console.log('within main');
}
});
答案 5 :(得分:0)
$('body').click(function () {
alert('clicked');
});
$('#main').click(function (event) {
event.stopPropagation();
});
应阻止#main
内的点击向下传播到body
。
答案 6 :(得分:0)
尝试$("body>:not(#main)").click(function(){...});
从samn修改
如果您需要实时版本,只需更改为
$("body>:not(#main)").live("click", function(){...});