单击子元素时阻止包含元素的执行事件

时间:2013-02-22 02:00:52

标签: javascript jquery html css

  • 我的所有元素都绝对定位
  • item2包含在item1
  • 当我点击item2时,默认行为是执行item2的点击然后点击item1
  • 当我点击item2 ??
  • 时,我能否以某种方式阻止对item1执行的任何操作

请点击小提琴中的item2

我的小提琴:

http://jsfiddle.net/z9Unk/59/

HTML

<div class="item1">
  item1
</div>
<div class="item2">
    item2
</div>
<div class="item3">
    item3
</div>

CSS:

item1 {
    position:absolute;
    width:150px;
    height:150px;
    background-color:red;
    top:5%;
}

.item3, .item2 {
    position:absolute;
    width:50px;
    height:50px;
    background-color:green;
    top:8%;
    left:1%;
    display:none;
}

.item3 {
    top:18%;
}

JS:

var item1 = $(".item1");
var item2 = $(".item2");
var item3 = $(".item3");

item1.hover(
    function() {
      item2.show();
      item3.show();
    },
    function() {
      item2.hide();
      item3.hide();
    }

);

item2.hover(
    function() {
      item3.hide();
    },
    function() {
    }

);

item2.click(
    function() {
        alert("Perform some function");
    }
);

item1.click(
    function() {
        alert("Perform item1 function");
    }
);

2 个答案:

答案 0 :(得分:1)

简单地返回false:

item2.click(
    function() {
        alert("Perform some function");
        return false;
    }
);

item1.click(
    function() {
        alert("Perform item1 function");
        return false;
    }
);

阅读本文:What does "return false;" do?

答案 1 :(得分:1)

您可以阻止事件冒泡DOM树,防止任何父处理程序被通知事件。

DOM Level 3活动:stopPropagation

IE6-8您可以在事件处理程序或return false

中添加window.event.cancelBubble = true

如果您使用jquery,可以在所有浏览器中使用event.stopPropagation