jquery事件帮助

时间:2009-10-26 22:25:30

标签: jquery events

我有这样的设置:

    <div id="container">
       <div id="close">Close</div>
    </div>

然后在我的jquery中我有这个:

$("#container").live("click",function(){
   changeTabs();
});

$("#close").live("click", function(){
   closeTabs();
});

问题在于,当您单击关闭div时,它会触发两个事件。我猜这是因为第二个div覆盖了第一个div。那么如何取消或阻止第一个事件被解雇?

4 个答案:

答案 0 :(得分:4)

查看event.stopPropagation()

来自the jQuery docs

  

停止将事件冒泡到   父元素,阻止任何父母   处理者被通知   事件

在您的情况下,这可能看起来像

$("#close").live("click", function(evt){
   evt.stopPropagation();
   closeTabs();
});

答案 1 :(得分:0)

这可能有效:

$("#container:not(#close)").live("click",function(){
   changeTabs();
});

$("#close").live("click", function(){
   closeTabs();
});

使用not selecto r。

答案 2 :(得分:0)

我不确定你为什么要将div用作关闭点击事件,你可以改用输入按钮吗?

<div id="container">
       <input type="button" id="close" value="Close"/>
</div>

$("#container").live("click",function(){
    changeTabs();
});

$("#close").live("click", function(){
    closeTabs();
    return false;
});

答案 3 :(得分:-1)

好的,所以有效的方法是在closeTabs()函数下我确实返回false;而这似乎解决了它