使用jQuery更改HTML字符串:不会更新字符串

时间:2011-10-04 03:49:31

标签: javascript jquery html string

我有一些需要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"; }
}

1 个答案:

答案 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/