我有一些需要2个HTML字符串的JQuery。每个字符串包含完全相同的html,但在一个字符串中,每个元素的innertext内容将不同,此字符串称为 newContent ,另一个 oldContent 。
我的函数:迭代oldContent,对于类的每个元素"可更新"(在oldContent内)我们将其innerText更改为newContent中相同元素的innerText。 / p>
我的问题:它没有改变oldContent的内容,在我执行该函数之后,oldContent包含完全相同的HTML(应该发生的事情是类可更新的元素应该具有不同的innerText )。
为什么字符串oldContent没有变化?
function insertContentIntoUpdatableElements( oldContent, newContent )
{
// Pre: oldContent & newContent must be strings of HTML returned from jquery's
// $("").html()
try
{
alert("BEFORE: "+oldContent);
var index = 0;
var oldElements = $(oldContent).find(".updatable");
var newElements = $(newContent).find(".updatable");
$(oldContent).find(".updatable").each( function()
{
var txt = $(newElements[index]).text(); alert("TEXT: "+txt);
alert("OLD TEXT: "+$(this).text());
$(this).text(txt);
index++;
alert("NEW TEXT: "+$(this).text()); // prints out CORRECT updated/changed text
});
alert("AFTER: "+oldContent); // prints out INCORRECT updated/changed text for each element of class "updatable"
return oldContent;
}
catch(ex) { alert("In insertContentIntoUpdatableElements(): "+ex); return "FAILED"; }
}
答案 0 :(得分:3)
这应该可以解决问题。
function insertContentIntoUpdatableElements( oldContent, newContent )
{
var result = $(oldContent);
var oldElements = result.find(".updatable");
var newElements = $(newContent).find(".updatable");
$(oldElements).each(function(index, el)
{
$(oldElements[index]).text($(newElements[index]).text());
});
return result;
}
查看有关jsFiddle的工作演示:http://jsfiddle.net/ZZVgh/