我有这个HTML页面
<html>
<body>
<div>a</div>
<div>b</div>
<div>c</div>
<div>d</div>
<div id='in_or_out'>e</div>
<div>f</div>
</body>
</html>
a,b,c,d,e和f可以是div而不仅仅是纯文本。
我想获得鼠标点击事件,但我怎么知道它是在#in_or_out div的内部还是外部?
编辑::伙计们,我知道如何检查div是否点击,但我希望当点击超出该div时我的事件被触发
答案 0 :(得分:24)
$("body > div").click(function() {
if ($(this).attr("id") == "in_or_out") {
// inside
} else {
// not inside
}
});
编辑:刚刚得知,有一个否定:
$("body > div:not(#in_or_out)").click(function(e) {
// not inside
});
答案 1 :(得分:9)
如果你想检测你是否在div内部或外部点击了,请在documentElement
上设置事件处理程序,让它从其他元素向上传播:
$("html").click(function (e)
{
if (e.target == document.getElementById("in_or_out"))
alert("In");
else
alert("Out!");
});
答案 2 :(得分:7)
也许这个会帮助你
$('body').click(function(){
//do smth
});
$('div#in_or_out').click(function(e){
e.stopPropagation();
// do smth else
});
答案 3 :(得分:4)
取决于你想要的。如果您只想执行代码,当在 #in_or_out
内时,您可以执行以下操作:
$('#in_or_out').click(function(){ /* your code here */ });
您可以拥有一个状态变量,指出鼠标是否在#in_or_out
中:
var inside = false;
$('#in_or_out').hover(function() { inside = true; }, function() { inside = false; });
然后,只要发生点击,您就可以inside
查看点击是否在in_or_out
内。
参考:.hover()
<强>更新强>
无论您绑定click
处理程序的哪个元素,都可以执行此操作:
$('element').click(function() {
if ($(this).attr('id') !== 'in_or_not') {
}
});
答案 4 :(得分:3)
对于里面它将是
$("#in_or_out").click(function() {
// do something here
});
外面......我不知道。
编辑:您可以尝试对body-tag执行相同操作(将click-handler分配给文档本身)。但是我不确定这两个事件是否会被激发。
答案 5 :(得分:1)
喜欢这个吗?
$("#in_or_out").click(function() {
alert("IN DIV!");
});