あなたのソリューションが原因でどのようにあなたのpopulateList
作品の動作しません。この行は、テーブルを空にしてclick
イベントリスナーで接続ボタンを削除し
$('#load').empty();
:あなたのpopulateList
で
は、次の行を持っています。
次に、イベントリスナーに添付されていない新しいbutton.delete
を完全に追加します。
これを解決するには、.on()
をpopulateList
機能に入れることができます。
var populateList = function(d) {
$("#load").empty();
var new_rows;
for(var i = 0; i < d.length; i++) {
new_rows += "<tr>" +
"<td>" + d[i].id + "</td>" +
"<td>" + d[i].name + "</td>" +
"<td>" + d[i].phone + "</td>" +
"<td><button class='delete' data-id='" + d[i].id + "'>delete</button></td>" +
"</tr>";
}
$("#load").append(new_rows);
// delete event
$(".delete").on("click", function() {
var delete_sel = $(this).attr("data-id");
populateList(removePerson(d, delete_sel));
});
};
ここには、作業中のjsFiddleがあります。
また、this answerのソリューションを使用することもできます(これはよりクリーンなソリューションです)。
$("table").on("click",".delete", function() {
var delete_sel = $(this).attr("data-id");
populateList(removePerson(data, delete_sel));
});
もっと彼の答えはjQuery documentation上で動作する理由の説明(selector
パラメータを見てください)。
'populateList'を使ってpopulateすると、' $( "。delete")を使って添付されたすべてのイベントハンドラは消えてしまいます。あなたは[Event Delegation ](https://learn.jquery.com/events/event-delegation/) - または、 'populateList'を呼び出すたびにイベントハンドラを再接続することができます –