使用jquery的onclick处理程序

时间:2012-04-24 23:05:45

标签: javascript jquery jquery-ui

我有以下代码

<div class="test-123">
   <p>Some Text</p>
   <div class="delete"></div>
   <div class="edit"></div>
</div>

问题是我必须为这三个元素(test-123,删除和编辑)设置onclick jquery处理程序。我面临以下问题。当我点击删除时,test-123的onclick处理程序也会在删除的onclick处理程序被执行后执行。

有没有办法以某种方式阻止这种情况?

3 个答案:

答案 0 :(得分:5)

您正在寻找stopPropogation

event.stopPropagation()

http://api.jquery.com/event.stopPropagation/

$(function(){   
    $(".test-123").click(function(){
       alert("click on div"); 
    });      
    $(".delete,.edit").click(function(e){
       e.stopPropagation() 
       alert("click on Links"); 
    });    
});​

注释掉e.stopPropagation行,看看会发生什么。

工作演示:http://jsfiddle.net/Pjn3s/2/

答案 1 :(得分:4)

参见jQuery的event.stopPropagation。这将阻止其他侦听器触发。 e.g,

$("p").click(function(event){
  event.stopPropagation();
  // do something
});

答案 2 :(得分:0)

正如@paislee所说的传播问题。您是否正在使用jQuery方法“live”,如:

$('selector').live('click', function(){
//The actions
});

我认为您应该检查方法“委托”的使用,即“强制”您设置顶部父级必须应用闭包的元素。它比任何方式都更安全(甚至点击事件)。