1

仅测试了一个 Mountain Lion (Mac),但在使用 Google Chrome 和 jQuery 的 .remove() 时,该元素会从 dom 中删除,但不会从屏幕中删除。

我的 css 停止处理已删除的标签,但工件仍留在屏幕上。我在搜索中找不到任何关于此的内容。

Chrome 版本 24.0.1312.57 - jQuery v1.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”,或者使用不同的标签,例如 class。

....

<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 回答