编辑:filter()显然是错误的。将其更改为find(),但问题仍然存在。
此代码适用于我:
$('#content')
.replaceWith($(
'<div>
<div id="content"> Hello <script type="text/javascript"> alert(123); </script>
</div>
</div>
'));
但这不是:
$('#content')
.replaceWith($(
'<div>
<div id="content"> Hello <script type="text/javascript"> alert(123); </script>
</div>
</div>
').find('#content'));
唯一的区别是,在第二个示例中,我只想过滤HTML的一部分,然后将其插入到DOM中。
有什么想法吗?感谢。
EDIT3:添加了解决方案
答案 0 :(得分:0)
这对我有用:
var newElements = $('<div><div id="content"><script>alert(123)</script></div></div>');
if (newElements.length > 1) {
for (var i = 1; i < newElements.length; i++) {
$('body').append(newElements[i]);
}
}
$('#content').html(newElements.find('#content').html());
原因是在第一次调用中创建元素,将所有脚本标记排序并将它们放入数组中。
console.log($('<div><div id="content"><script>alert(123)</script></div></div>'));
结果:
[div, script]
然后很明显,当将.find()应用于该数组时,脚本标记将丢失。