web-dev-qa-db-ja.com

.parent()。remove()の問題

アプリケーションにユーザーを追加できるjQueryベースのフォームがあります。最初のフィールドセットのクローンを作成し、最大3人まで追加できます。あと1人追加すると、その人を削除するオプションが表示されます。

ただし、削除ボタンが機能しません。以前は、クローンに追加の関数を追加して、フィールドセット内の他の要素のIDを変更するまででした。

私が使用しています:

$(".remove").click(function() {
    $(this).parent().remove();

元々は機能していましたが、今は機能せず、理由がわかりません。

最初の「このユーザーを削除」を停止する行を削除して、最初の行はまだ機能しているが、残りは機能していないことを示しています。 (最終的には、修正されたときに最初のステージをオフステージに配置します)

たぶん見やすいので載せます こちら

だから本質的に、なぜ私の「この人を削除する」が最初のセクション以外のすべてに取り組んでいないのですか?

15

試してください:

$(document).on('click', '.remove', function() {
    $(this).parent().remove();
});

イベントはページの読み込み時にバインドされるため、新しく追加された要素はバインドされません。

22
PeeHaa

「ライブ」関数呼び出しは非推奨になり、機能しなくなりました。ここでは、置換 'on()'メソッドを使用して関数を書き換える方法と非推奨の詳細について説明します。

http://api.jquery.com/live/

現在作成されている要素と新しく作成された要素をすべて処理するには、次を使用する必要があります。

$(document).on("click", ".remove", function() {
    $(this).parent().remove();
});

jQueryは要素ではなくドキュメントオブジェクトで実行され、監視する要素を指定してイベントリスナーを追加する追加のパラメーターがあります。

8
Dave Hilditch

式を閉じてください:

$(".remove").click(function() {
    $(this).parent().remove();
});
5
orolo

親を削除するためにこれを行うことができます:

 $(document).on("click", ".remove", function() { 
      $(this).parent().remove(); 
 });

または、すべての親を削除するためにこれを行うことができます:

 $(document).on("click", ".remove", function() { 
      $(this).parents().remove();
 });
1
Andrea_dev

要素は元々存在しません。つまり、.live()または.delegate()を使用する必要があります

たとえば、次のように変更します。

$(".remove").click(...) thisの代わりに$(".remove").live("click", ...)を使用します

0
davin