XML в JQUERY, отображает данные, но зацикливает содержимое - PullRequest
0 голосов
/ 02 марта 2011

У меня есть некоторый код jquery, который загружает содержимое файла XML, сгенерированного сервлетом JSP.

Идея состоит в том, что он извлекает информацию и затем отображает ее, обновляя каждую 1 секунду.

Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда он обновляется, он просто добавляет данные обратно к старым данным, поэтому он просто выводит те же значения:

Вот мой код:

    <script>


        $(document).ready(function() {




        });
    </script>

Как я могу заставить его отображаться один раз, затем, когда он обновляет его, очищает себя.

Спасибо

Ответы [ 2 ]

1 голос
/ 02 марта 2011

Замените свою линию $('#tidm').append($(html)); на $('#tidm').empty().append($(html));

0 голосов
/ 02 марта 2011

вызов:

$('#tidm').html(''); // .empty() is slightly faster

перед каждым вашим циклом, это очистит старый HTML

Редактировать: Мой первоначальный ответ был просто для очистки HTML, но некоторые комментарии указывают на действительностьпроблемы с производительностью в коде из исходного вопроса.Поэтому, хотя производительность исходного кода не была предметом вопроса, я собираюсь дополнить свой ответ тем, что, по моему мнению, будет более производительным.

Я не проверял это, но намерение должно быть ясным.

$(document).ready(function() {
    var $tidm = $('#tidm');
    var html;
    setInterval(function() {
        $.get('Stocks', function(data) {
            html = '';
            $tidm.empty(); // using empty instead of .html('') as suggested
            $(data).find('stock').each(function() {
                var $stock = $(this);
                var tidm = $stock.find("tidm").text();
                var name = $stock.find("name").text();
                var price = $stock.find("price").text();
                var change = $stock.find("change").text();
                html += '<p>tidm = ' + tidm + '</p>';
                html += '<p>name =' + name + '</p>';
                html += '<p>price = ' + price + '</p>';
                html += '<p>change = ' + change + '</p>';
            });
            $tidm.html(html);
        });
    }, 1000); // 1000 milliseconds = 1 second.
});

Если есть какие-либо улучшения, которые могут быть сделаны, или ошибки, которые я сделал, сообщите мне в комментариях.

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