jQuery单击外部标记
例如,我有htmljQuery单击外部标记,jquery,Jquery,例如,我有html <body><div id="main"><p>some text</p></div></div></div></body> 不工作 $('body').click(function(e){ //if click inside #main if($(e.target).parents('#main').length || $(e.target).is('#main')){
<body><div id="main"><p>some text</p></div></div></div></body>
不工作
$('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
}
});
.您是否尝试过:
$("body").children().filter(":not(#main)").click(function(){...});
首先,应将Html更改为:
<body><div id="main"><p>some text</p></div></body>
一些文本
它有两个未关闭的div标签,然后David的答案就可以了
$('body').click(function(e) {
if (e.target.id != 'main') {
console.log('outside main but within body');
} else {
console.log('within main');
}
});
应停止在#main
内的单击以向下传播到正文尝试$(“正文>:非(#main)”)。单击(函数(){…)代码>
修改自samn
如果您需要实时版本,只需更改为
$(“body>:not(#main)”).live(“单击”,function(){…})代码>这比我自己的建议要好得多(更简洁明了)…+1!=)也可以写一行$(“body>:not(#main)”)。单击(function(){…});
$('body').click(function(e) {
if (e.target.id != 'main') {
console.log('outside main but within body');
} else {
console.log('within main');
}
});
$('body').click(function () {
alert('clicked');
});
$('#main').click(function (event) {
event.stopPropagation();
});