Использование jQuery для изменения строки HTML: не будет обновлять строку - PullRequest
0 голосов
/ 04 октября 2011

У меня есть несколько JQuery, который принимает 2 строки HTML. Каждая строка содержит точно такой же html, за исключением того, что в одной строке содержимое внутреннего текста каждого элемента будет отличаться, эта строка называется newContent , другая oldContent .

Моя функция: перебирает oldContent, для каждого элемента класса «обновляемый» (внутри oldContent) мы меняем его innerText на innerText того же элемента в newContent.

Моя проблема: это не меняет содержимое 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 Ответ

3 голосов
/ 04 октября 2011

Это должно сработать.

  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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...