我有一个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 test 内部也不会触发任何事件,即当我点击复选框时,不会触发任何事件。
任何帮助都将非常感激。
答案 0 :(得分:9)
您可以通过以下代码(演示: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
}
});
});
答案 1 :(得分:2)
试试这个,
$('.abc').click(function(e){
if(e.target.id == 'test') {
return false;
}
})
答案 2 :(得分:1)
您可以获取点击的div的ID,并检查它是否等于测试。
$("body").on("click", function(e) {
if(e.target.id != "test") {
// do something
return false;
}
else {
return false;
}
});
答案 3 :(得分: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_
}
});
答案 4 :(得分:1)
$(document).click(function(e) {
if(e.target.id == 'test') {
alert( "Handler for .click() called." );
}
});
答案 5 :(得分:1)
HTML:
<div id="abc" onclick="getId()">
JavaScript的:
function getId() {
--Write your function here--
}
答案 6 :(得分:1)
只需使用:(Demo)
<强>的JavaScript 强>
$('.abc').click(function(e){
alert('Do anything');
});
$('#test').click(function(e){
e.stopPropagation();
// Do only if anything in #test was clicked
});
e.stopPropagation()
阻止了bubbling the event to the next element
答案 7 :(得分:1)
试试这个
$(document).click(function(e) {
if($(e.target).is("#test")){
e.preventdefault();
e.stopPropogation();
} else{
//call your method
}
}
答案 8 :(得分:1)
使用Div焦点事件,因为只有当div失去焦点时才会调用一次。请参阅帖子Div - onblur function