1

1つのMountainLion(Mac)のみをテストしましたが、Google ChromeとjQueryの.remove()を使用すると、要素はdomから削除されますが、画面からは削除されません。

削除されたタグでcssが機能しなくなりましたが、のアーティファクトが画面に残っています。私の検索ではこれについて何も見つかりません。

Chromeバージョン24.0.1312.57-jQueryv1.7.1

再現できるようにコーディングします。

http://w2r.com/x/

注意:最後の要素で[削除]をクリックすると、問題が発生します。

4

2 に答える 2

1

コードにいくつかの問題があります。

すべての要素に一意の ID を使用する必要があります (他の回答で述べたように)。

IDを有効にするには、文字 (az) で始まる必要があります

'spans' (インライン要素) は'divs' (ブロック要素) の親であってはなりません

jQuery.live() は jQuery 1.7 以降非推奨であり、今後は使用しないでください。代わりに .on() を使用してください

すべての要素にイベント ハンドラーを割り当てる代わりに、委譲 (イベント バブリング) を使用します。これにより、コードが軽量化、高速化され、(特に、dom から要素を削除しているため、メモリ リークのリスクが軽減されます)

<div class='wrapper-div'>
  <div id="e6" class='day'>
    <div>
      <input type="hidden" name="n_6" value="6" /><div>Label</div>
      <a href="javascript:void(0);" class="remDay">Remove</a>
        </div>
  </div>
  <div id="e7" class='day'>
    <div>
      <input type="hidden" name="n_7" value="7" /><div>Label</div>
      <a href="javascript:void(0);" class="remDay">Remove</a>
        </div>
  </div>
</div>

<script>

 $('.wrapper-div').on('click', '.remDay', function() {
    $(this).closest('div.day').remove();
 });
</script>
于 2013-01-31T18:46:43.853 に答える
0

DOM要素には一意のIDタグを使用する必要があります。

または、「remDay」を使い続けたい場合は、クラスなどの別のタグを使用します。

....

<span id="ID6"><div><input type="hidden" name="n_6" value="6" /> <div >Label:</div> TEXT 
<a href="javascript:void(0);" class="remDay">Remove</a></div></span>

....

   $('.remDay').live('click', function() {
        $(this).parents('span').remove(); // Ticket #13359
   });

また、IDにはhttp://www.w3schools.com/tags/att_global_id.aspのように文字が含まれている必要があります

于 2013-01-31T18:28:51.563 に答える