2013-06-11 168 views
-1

我有以下的jQuery代碼來創建表中的每一行的按鈕創建。刪除按鈕的單擊事件:按鈕通過jQuery不會觸發。點擊事件

$(".removeruleset").click(function(){ 
      alert('inside'); 
      id = $(this).closest('tr').attr('id'); 
      alert(id); 
    }); 

將行添加到我的表的代碼以及刪除按鈕的作品。但是,當我點擊其中一個刪除按鈕時,它不會觸發點擊事件。

作爲一個測試,我創建了一個按鈕,像這樣,jQuery的以外:

<input type="button" class="removeruleset" value="push me"> 

,並觸發click事件沒有問題。 你能告訴我我要去哪裏嗎?

謝謝。

編輯1

我試着改變代碼看起來像這樣:

 $(document).on("click", ".removeruleset", function(){ 
      alert('inside'); 
      id = $(this).closest('tr').attr('id'); 
      alert(id); 
    }); 

但是,這使我有以下錯誤:

SCRIPT438:對象不支持財產或方法「上'

我正在使用版本1.5.2。

所以,我提到了在一些評論(Event binding on dynamically created elements?)中提到的文章,並嘗試這樣做,而不是:

$("body").delegate("click", ".removeruleset", function(e){ 
      alert('inside'); 
      id = $(this).closest('tr').attr('id'); 
      alert(id); 
    }); 

這擺脫了錯誤消息,但事件處理程序依然沒有觸發 還嘗試過:

$("body").on("click", ".removeruleset", function(e){ 
      alert('inside'); 
      id = $(this).closest('tr').attr('id'); 
      alert(id); 
    }); 

謝謝。

+1

你需要做的事件委託,或創建的DOM元素後附加該事件。 – crush

+0

這可能有幫助:http:// stackoverflow。com/a/17046190/1823841 –

+0

它聞起來像巨大的複製.. – writeToBhuwan

回答

-2

,你可以嘗試一下本作的動態控制。

$('#id').live('click', function() { 

    ----your code-- 

}) 

否則你可以試試這個:

>>>$(document).on('click','#id', function() { 

    -----your code --- 

    }) 
+2

1)問題是重複的。 2)'.live()'方法已被棄用。 –

+0

+1對於評論@ RokoC.Buljan ..但你永遠不知道他可能會使用什麼版本.. – writeToBhuwan

+0

@writeToBhuwan在這種情況下,我們在這裏* *最新*,並建議什麼是最好的。 '| ' –

2

試試這個: -

$(document).on("click", ".removeruleset", function(){ 
      alert('inside'); 
      id = $(this).closest('tr').attr('id'); 
      alert(id); 
    }); 

當您添加的事件它是不存在的元素。爲了使這項工作,你需要使用事件委派。

+1

**正是**每天都會有20個關於委託動態生成元素事件的問題。SO社區在這裏可以回答Q,但也可以關閉重複。以「Duplicate」結束問題爲OPoster提供相關答案。 –

+0

我試過這段代碼,但是我得到了SCRIPT438:對象不支持屬性或方法'on'。我會谷歌,看看有什麼。 –

+0

你正在使用哪個版本的jQuery? – pvnarula

1

在另一種方法是做這個htmlstring = htmlstring + '<td><input type="button" value="Remove" class="removeruleset"click=\"myhandler\"/></td>'

,其中將myHandler是一個功能

function myhandler(){ 
alert('inside'); 
      id = $(this).closest('tr').attr('id'); 
      alert(id); 
} 
相關問題