无法修改返回的AJAX变量

时间:2011-01-20 17:55:54

标签: javascript ajax jquery

我目前有以下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

1 个答案:

答案 0 :(得分:2)

编写$(html)并操纵结果DOM树无法修改原始字符串。

相反,你可以写

var content = $('<div>' + html + '</div>');
//Modify content
html = content.html();

通过将HTML包装在<div>中,我可以轻松检索完整的源代码。

我在我的博客上写了more detailed explanation