2011-01-20 85 views
0

我目前有以下JavaScript/jQuery脚本,它使用AJAX获取外部html页面并在其所有文本节点上运行一个函数。不能修改返回的AJAX变量

$.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

回答

2

写作$(html)和操纵的结果DOM树不能修改原始字符串。

相反,你可以写

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

通过在<div>包装的HTML,我可以轻松地检索完整的源代码。我的博客写了more detailed explanation