• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:親要素の除去(Jqueryのunwrapメソッド))

親要素の除去(Jqueryのunwrapメソッド)

このQ&Aのポイント
  • jqueryのunwrapメソッドを使用してdiv要素の除去を行うコードを作成しました。
  • ボタンを押下すると特定のdiv要素が除去され、テーブルが1つだけ残るようになります。
  • しかし、ボタンを押下後、IEの開発者ツールで確認するとテーブルが残り1つのテーブルに対してunwrapがうまく行われていないようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • int3
  • ベストアンサー率34% (65/190)
回答No.2

return false と書くとその要素処理自体しないと思います。 最後の要素は削除せずに unwrapだけしたいのであれば、 //「name='tblList'」のテーブルが残り1つの場合 if($("table[name='tblList']").length == 1) { // tableの親要素「div#wrap1」を除去 $(this).unwrap(); } else { // 「name='tblList'」のテーブルを削除 $(this).remove(); } とかけばいいんじゃないですか?

unko347
質問者

お礼

ご回答ありがとうございます。 >>return false と書くとその要素処理自体しないと思います。 そのような仕様だったのですね。 $(this).unwrap();の後にreturn false;していたのでunwrap()自体は実行されている と思っていました。 ご指摘のように修正したところうまくいきました。ありがとうございました。

その他の回答 (1)

  • int3
  • ベストアンサー率34% (65/190)
回答No.1

return false; を書いている位置がまちがえているんじゃないでしょうか。 // tableの親要素「div#wrap1」を除去 $(this).unwrap(); //return false; } }); } return false;

unko347
質問者

補足

ご回答ありがとうございます。 ご指摘の箇所ですがテーブルの数が残り1つになった場合に $("table[name='tblList']").each(function(){} のループを抜けるために return false;(break文と同義) を行っています。 従いまして、ご指摘のようにfalse の位置を変更しますとループがもう一回まわり $(this).remove();の処理が行われて残りのテーブルも削除されてしまいます。

関連するQ&A