2011-10-16 32 views
1

我有jQuery的问题,我最近开始玩弄。我会尽我所能解释我的情况,并尝试添加所有相关信息。jQuery事件发生的速度加快

我想要的: 两个列表,一个在其自己的选项卡中。列表中的每个项目都有两个图像,它们也充当按钮。当按下按钮时,会发生事件。该事件将增加元素到另一个列表。现在,作为概念证明,此事件是一个包含列表项目标识的警报。

问题: 每次按下按钮时都会以增加的速度发生警报。更准确地说,在每次按下按钮之后,会再弹出一次警报。第一次没有任何反应。下一次显示一条警报。之后,显示了两个连续的警报等。

这对我而言并不明显。如果有人能指出我可能会做错什么,我将不胜感激。

HTML:

<div class="demo"> 
<div id="tabs"> 
    <ul> 
     <li><a href="#tabs-1">Tab 1</a></li> 
     <li><a href="#tabs-2">Tab 2</a></li> 
    </ul> 

    <div id="tabs-1"> 
     <ul id="sortable11" class="todoList"> 
      <li id="6" class="todo"> 
       <div class="text">This is text (6)</div> 
       <div class="actions"> 
        <a href="#" class="edit">Edit</a> 
        <a href="#" class="delete">Delete</a> 
       </div> 
      </li> 
     </ul> 
    </div> 

    <div id="tabs-2"> 
     <ul id="sortable22" class="todoList"> 
      <li class="ui-state-highlight">Item 1</li> 
      <li class="ui-state-highlight">Item 2</li> 
     </ul> 
    </div> 
</div> 
</div> 

CSS:

.todo .actions a.edit{ 
    background:url("../img/edit.png") no-repeat center center; 
} 

.todo .actions a.delete{ 
    background:url("../img/delete.png") no-repeat center center; 
} 

的jQuery:

$('.todo a.edit').live('click',function(){ 
    $('#sortable11 > li').click(function(){ 
     var current_id = $(this).attr("id"); 
     alert(current_id); 
    }); 
}); 

回答

1

要绑定在其他单击处理点击它是完全错误的。

只需绑定一次,它会很好地工作:

$('#sortable11 > li').live('click', function(){ 
    var current_id = $(this).attr("id"); 
    alert(current_id); 
}); 

在jQuery中,结合事件处理函数不是覆盖现有的处理程序,但增加新的处理程序,使编程更加灵活。

可以删除以前附加的处理程序,但我看不出有任何理由这样做。

+0

非常感谢,现在一切都像我的目标一样工作。 – skari