2012-05-16 60 views
0

如果用戶需要添加更多信息,我使用append方法來添加一些輸入字段和一個按鈕形式。每個按鈕都有不同的名稱和ID,但是具有相同的類別。使用jquery刪除一些html代碼

追加過程工作正常,但是當我想使用新按鈕刪除特定字段時,它不起作用。點擊操作適用於第一個按鈕,默認情況下該按鈕存在,但現在用於在運行時添加的按鈕。

rc; //is the counter which increments by one, each time. 
    jQuery('#mytable').append("<div id='rev-" + rc + "' class='reviewer'>" + 
          "<input type='text' name='reviewer_email[]' id='reviewer_email" + rc + "' value='' />" + 
    "<input type='button' name='rd" + rc + "' id='rd" + rc + "' class='rrd' value='Remove' /></div>"); 

    jQuery(".rrd").click(function(){ 
    alert("Test"); 
    }); 

...我已經尋找解決方案,首先我用了所有的按鈕相同的ID,但現在我使用的是同一類的每個按鈕,而不是ID。

任何人都可以提出一個想法,我哪裏出錯了。

上面的代碼不是確切的代碼,但想法,我如何使用它。

謝謝。

回答

2

對於已添加到DOM的元素,只能使用.click()事件處理程序。使用jQuery < 1.7時

$(document).on("click", ".rrd", function(event){ 
    // do stuff 
}); 

或者你應該使用.delegate()

對於動態添加的元素,你應該使用.on()

$(document).delegate(".rrd", "click", function(event){ 
    // do stuff 
}); 

注意.live()已被棄用,也slower

從jQuery文檔:

在jQuery 1.7的,所述.live()方法被棄用。使用.on()附加事件處理程序。老版本的jQuery用戶應優先使用.delegate(),而不要使用.live()。

+0

謝謝,它幫助我。 – MTahir

0

您將事件綁定到所有帶有.rrd類的元素上,但是這不會計算動態創建的元素(加載頁面後)。

改爲先定位頭元素,然後定位要刪除的實際元素。

看看這個視頻,它詳細說明 - >http://tutsplus.com/lesson/bind-live-delegate-huh/

+0

謝謝,本教程真的有用 – MTahir

+0

歡迎您。仍然由於某種原因downvoted ... – Christophe

+0

@ krike不要擔心它...我認爲「有人」只是扔出他們的嬰兒車搖鈴:) – FluffyKitten

0

這不是一個直接的解決你的問題,但它可能是你在一般更好的解決方案。 你有沒有考慮過使用現有的插件,而不是自己開發一切?

看看SheepIt也可能有其他人,但我只用過這一個。