$ .replaceWith()和$ .remove + $ .appendTo之间的差异?

时间:2014-11-14 22:02:51

标签: javascript jquery

当我使用这两位代码时,我遇到了不同的结果。对我来说,它们应该是等价的。有什么区别?

var mapString = '<map id="map"><area shape="poly" coords="52,21,92,21,92,196,52,196"></map>';

//  First option:
$('#map').replaceWith(mapString);

//  Second option:
var mapParent = $('#map').parent();
$('#map').remove();
$(mapString ).appendTo(mapParent);

第一个选项用表示为字符串的新map元素替换现有的map DOM元素。第二个选项删除现有的map DOM元素,然后附加一个新的map元素。

这些不应该相同......?调用replaceWith时,我的地图区域似乎没有刷新。

编辑:第一个不会导致浏览器重绘第二个吗?

2 个答案:

答案 0 :(得分:1)

结果不一样,因为:

  • replaceWith():被替换的元素将位于同一位置(f.e。其父级的第二个子级)
  • appentTo():附加的元素将是其父元素的最后一个子元素!

答案 1 :(得分:1)

也许您的网页上有其他脚本错误?在这两种情况下,此代码示例适用于我:

&#13;
&#13;
var newContent = '<div id="original">New Content!</div>';

$('#original').replaceWith(newContent);


var parent = $('#original2').parent();
$('#original2').remove();
$(newContent).appendTo(parent);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div>
  <div id="original">Original Content 1</div>
</div>

<div>
  <div id="original2">Original Content 2</div>
</div>
&#13;
&#13;
&#13;