如何将事件绑定到元素外部?

时间:2011-10-08 22:27:25

标签: jquery events

假设我们有盒子。在这个框中是另一个框(box2)。我希望在框中单击鼠标时激活一个事件,但如果单击box2,我不想激活它。我怎样才能做到这一点?我只想将事件绑定到框但排除box2。我做了一个测试用例:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="jquery-1.6.3.min.js"></script>
<style>
.box {width: 300px;height:150px;border:1px solid black;}
.box2 {width: 10px;height:8px;border:1px solid red;z-index:2;}
</style>
<script>
$(function() {
    $('.box').click(function() {
        alert('clicked');
    });
});
</script>
</head>
<body>
<div class="box"><div class="box2"></div></div>
</body>
</html>

在这个测试用例中,我想在box2外点击鼠标时发出警报。不幸的是,无论光标是什么,它都会激活,它只关心它是否在盒子里。那么,如果点击框中的话我怎么能激活它,如果点击box2(红色框)则不能激活它?

2 个答案:

答案 0 :(得分:2)

添加:

$('.box2').click(function(e) {
        e.stopPropagation();
    });

答案 1 :(得分:1)

你可以制作2个点击处理程序,一个用于'box',一个用于'box2'。 使用box2的处理程序,设置变量'box2',如果单击'box2',则设置为true。 在“box”的clickhandler中检查此变量,它可以正常工作!

将此用作javascript

$(function() {
    var box2 = false;
    $('.box2').click(function() {
        box2 = true;
    });
    $('.box').click(function() {
        if(!box2){
            alert('clicked');
        }
    });
});