[英]on.click not working after first click on dynamically created table
我動態創建了一個充滿“演員”鏈接的表格,它允許將演員信息拉入表單以刪除或更新行。 刪除按鈕僅在您選擇演員時彈出。
我可以單擊一行,將信息拉入表單,並在第一次嘗試時將其刪除。 但是,當我嘗試添加一個新的“演員”然后將其刪除,或者只是刪除現有的第二行時,“刪除演員”按鈕不起作用。 只有在第一次成功刪除后,按鈕才不再起作用。
var addActor = function() {
// Creates a table of links for each added actor with an id based from # of actors
$("#actorsTable").append("<tr><td><a href='' onclick='deleteActor(this)' class='update' data-idx='" + actors.length + "'>" + newActor.fName + " " + newActor.lName + "</a></td></tr> ");
$(".update").off("click");
$(".update").on("click", selectActor);
};
var deleteActor = function(e) {
$("#deleteActor").on('click', function(event) {
event.preventDefault();
var row = e.parentNode.parentNode;
row.parentNode.removeChild(row);
clearForm(actorForm);
actorState("new");
});
};
我是 jQuery/javascript 的新手,我很確定這是由於 DOM 的變化,但我只是不知道要改變什么才能使它工作。
嘗試
var deleteActor = function(e) {
$("#deleteActor").unbind();
$("#deleteActor").on('click', function(event) {
event.preventDefault();
var row = e.parentNode.parentNode;
row.parentNode.removeChild(row);
clearForm(actorForm);
actorState("new");
});
};
這是解綁的鏈接。 http://api.jquery.com/unbind/
問題是因為您正在從onclick
屬性運行的單擊處理程序函數中添加另一個單擊處理程序(在 jQuery 中)。 您應該使用一種方法,而不是同時使用兩種方法。 要以最簡單的方式解決問題,只需從deleteActor()
函數中刪除 jQuery 代碼:
var deleteActor = function(e) {
var row = e.parentNode.parentNode;
row.parentNode.removeChild(row);
clearForm(actorForm);
actorState("new");
};
當您動態添加 html 時,您需要將事件附加到父靜態元素,如下所示:
$("#actorsTable").on("click","a.update", function() {
$(this).closest("tr").remove();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.