我目前有以下JavaScript / jQuery脚本,它使用AJAX获取外部html页面并在其所有文本节点上运行一个函数。
$.get('webpage.html', function (html) {
$(html).find('*').each(function () {
$(this).contents().filter(function () { return this.nodeType === 3 }).each(function () {
this.nodeValue = foo(this.nodeValue);
console.log(this.nodeValue);
});
console.log(html);
});
然而,虽然记录的新文本节点值已经改变并且都是正确的,但是当我尝试在最后记录html时,我只是得到了我开始的内容,原始的外部网页没有任何修改。
我做错了什么?
DLiKS
答案 0 :(得分:2)
编写$(html)
并操纵结果DOM树无法修改原始字符串。
相反,你可以写
var content = $('<div>' + html + '</div>');
//Modify content
html = content.html();
通过将HTML包装在<div>
中,我可以轻松检索完整的源代码。
我在我的博客上写了more detailed explanation。