2011-10-16 47 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