Jquery: заменить контент, только если новый контент отличается - PullRequest
1 голос
/ 22 мая 2011

У меня есть php-файл, который вызывается каждую секунду в ajax для обновления содержимого.Этот php-файл возвращает js-файл, который должен изменить html-содержимое div с эффектом.

Но я бы хотел изменить это содержимое, только если новое отличается!Кроме того, у меня есть div, который обновляет себя с эффектом, даже если это то же самое содержимое!

Я тестировал с этим кодом:

if ($('#mydiv').html()!=data_insertion) $('#mydiv').fadeTo("fast", 0, function () {$(this).html(data_insertion).fadeTo("fast", 1)});

Но этот код не кросс-браузерный ..Действительно, моя переменная data_insertion содержит некоторый HTML-контент.И каждый браузер вставляет его, изменяя порядок атрибутов и т. Д. Вот почему $ ('# mydiv'). Html () никогда не равно data_insertion.

1 Ответ

1 голос
/ 22 мая 2011

Вы можете использовать локальный кеш результата, прикрепленный к элементу.В вашем ajax callback сделайте что-то вроде:

if (jQuery.data($('#mydiv')[0], 'last_data_insertion') != data_insertion) {
    // Update DOM content
    $('#mydiv').fadeTo("fast", 0, function () {$(this).html(data_insertion).fadeTo("fast", 1)});

    // Reset the local cache
    jQuery.data($('#mydiv')[0], 'last_data_insertion', data_insertion);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...