私のコードは新しいフィールドを動的に作成しますが、最初に作成したフィールドのみを削除できます。 remove関数を呼び出す他のすべての試みは失敗するように見えますが、私はなぜそれがわからないのですか?closest()。remove()は一度動作してから動作を停止します
フィドル:https://jsfiddle.net/n2fole00/25xfht1y/
HTML
<div class="acal-position-container">
<div class="acal-card-container">
<input type="hidden" name="id[]" value="">
<div style="background-color:#ADD8E6;padding:15px;margin-top:15px;">
<div style="text-align:right;margin-bottom:10px;">
<a href="#" class="remove-position-card"><strong>Remove position </strong></a>
</div>
<div class="form-group">
<label for="title[]">Title</label>
<input type="text" name="title[]" value="" class="form-control" required>
</div>
</div>
</div>
</div>
<input type="button" id="add_position_card" style="margin-top:5px;" value="Add position">
jQueryの
$('.remove-position-card').click(function() {
$(this).closest('.acal-card-container').remove();
//console.log('called');
});
$('#add_position_card').click(function() {
$('.acal-position-container').append('<div class="acal-card-container">' +
' <input type="hidden" name="id[]" value="">' +
' <div style="background-color:#ADD8E6;padding:15px;margin-top:15px;">' +
' <div style="text-align:right;margin-bottom:10px;">' +
' <a href="#" class="remove-position-card"><strong>Remove position </strong></a>' +
' </div>' +
' <div class="form-group">' +
' <label for="title[]">Title</label>' +
' <input type="text" name="title[]" value="" class="form-control" required>' +
' </div>' +
' </div>' +
'</div>');
});
感謝。
*理由は*答えの仕事があります(a)クリックハンドラを明示的に追加する(tediou (b)含まれている要素にクリックハンドラを追加して、クリックイベントを「バブルアップ」することができます(Googleで可能です)。ハンドラを各要素に追加する必要はありません。要素ごとに1つではなくハンドラが1つのみであるため、これも効率的です。 –