替换jQuery非DOM对象中的一个元素

时间:2016-08-23 05:01:23

标签: javascript jquery html dom

html = "<p>title</p><div><ul class='www'></ul>something</div>";
$html = $(html);
$html.filter('p').replaceWith('<h2>' + $html.filter('p').html() + '</h2>'); //not working 
container = $('<div></div>');
html = container.html($html)[0].innerHTML; //trying to output "<h2>title</h2><div><ul class='www'></ul>something</div>"

在非DOM环境中,我正在尝试修改HTML字符串,替换其中一个成员。 jQuery&#39; replaceWith不起作用,因为它适用于DOM。我该怎么做?

2 个答案:

答案 0 :(得分:0)

看一下这个例子。首先我删除B,然后将其添加到A.然后我插入一个新的C.你可以用A,B和C替换所有内容。

重要的是,您删除并附加/添加手册:)

&#13;
&#13;
a = $('#a');
b = $('#b');
c = $('<span>').attr('id', 'c').text('C');

b.remove();
a.prepend(b);
a.append(c);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="parent">
  <span id="a">A</span>
  <span id="b">B</span>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

虽然元素已被替换,但$html未更新p位于$html变量

的根目录中

html = "<p>title</p><div><ul class='www'></ul>something</div>";
$container = $('<div></div>');
$container.html(html);
$container.find('p').replaceWith(function(idx, html) {
  return '<h2>' + html + '</h2>'
})
html = $container[0].innerHTML;
console.log(html)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>