Как я могу заменить узел DOM в памяти, используя jQuery - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть следующий код

$.getJSON("../services/getNavigationAffectedList.php", obj, function(response)
{
    $.each(response, function(i, v)
    {
        // Get the old page source
        var source = v;

        // Get the updated preview HTML
        var new_nav = $('#preview').find('#navigation-block').html();

        // Replace the old navigation with the preview HTML
        $(source).find('.navigation-block').html(new_nav);
        var source = $(source).html();

        var obj = {
            page_path: i,
            new_source: source
        };
        console.log(obj);
    });

Который пытается заменить класс блока навигации в DOM, содержащийся в памяти (источник). Хотя $ (source) .html () не дает ожидаемых результатов.

Помощь

Частичный JSON-ответ на запрос Дэвида:

{ "\ / вар \ / WWW \ / html \ / CMS \ / сайтов \ / о \ /debbie.php": "\ г \ п ... тонны больше html здесь ....}

Вот скрипка для тестирования: http://jsfiddle.net/eZP9E/1/

1 Ответ

0 голосов
/ 28 февраля 2011

Попробуйте функцию замены с помощью jQuery. Это то, что вы ищете?

http://api.jquery.com/replaceWith/

Какой нежелательный результат вы получаете?

ОБНОВЛЕНИЕ: Оказывается, проблема в способе создания элементов DOM в jQuery.

Ваш код ожидает, что 'var original' - это элемент, но это не так.

var container = $('<html><body><div class="navigation">1</div></body></html>');
alert(container.length); // returns 1, div.navigation

var container = $('<html><body><div class="navigation">1</div><div class="body"></div></body></html>');
alert(container.length); // returns 2, div.navigation, div.body

var container = $('<div id="root"><html><body><div class="navigation">1</div></body></html></div>');
alert(container.length); // returns 1, sweet! we can use this

После некоторого тестирования это результаты, которые я получил из приведенного выше кода.

Быстрое решение вашей проблемы - обновить код примерно так:

var original = $('<div id="root">' + v + '</div>', document);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...