2013-07-16 53 views
2

我正在創建一個動態表,其中一個新行添加到按鈕單擊上。 該表格包含一個名爲的列刪除。每當刪除鏈接被點擊時,相應的行將被刪除。但我的jquery不起作用。使用jquery從html表中刪除動態添加的行時發生的問題

一個刪除從表項的片段是:

$(".delRow").click(function() 
         { 
          alert("Called"); 
          $(this).parents('tr').first().remove(); 


         } 
        ); 

這裏是的jsfiddle LINK

更新:請注意,我能夠成功地刪除非動態添加這些行。當我單擊動態添加的行中的刪除a-link列時,也不會調用警報。

+0

** [動態創建的元素上的事件綁定?](http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elements)**的可能重複。這個問題每天會被詢問4/5次。 – lifetimes

回答

4

由於.delRow不存在在頁面加載後,你需要使用.on到事件處理程序動態創建的元素綁定的時間。

要使用這種形式的on,我們首先使用jQuery來選擇我們想要綁定事件處理程序的元素的現有靜態父對象。所選父母應儘可能接近目標元素以提高表現。接下來我們指定應該處理的事件和我們的目標元素的選擇器。最後,提供了事件處理程序。

  /*Remove Text Button*/ 
      $("#sample-table").on("click", ".delRow", function() 
       { 
        $(this).parents("tr").remove(); 
       } 
      ); 

工作實施例http://jsfiddle.net/qRUev/2/

Documentation

+2

這是正確的,但爲什麼不$(this).closest('tr')。remove();而不是$(this).parents(「tr」)。remove();,最接近會提高性能 –

+0

@ ravi-mone你能否提供一些文檔說明它可以提高性能?我對它感興趣,但是我必須說我不知道​​要找什麼。 –

1

您可能需要使用

$(document).on('click', ".delRow", function() 
        { 
         alert("Called"); 
         $(this).parents('tr').first().remove(); 


        } 
       ); 

演示:Fiddle

2

嘗試使用

$('.delRow').live('click', function(){ 
    alert("Called"); 
}); 

代替

$(".delRow").click(function(){ 
    alert("Called"); 
}); 
相關問題