При добавлении div удалите старые добавленные div, если их больше 10

0

Рассмотрим следующий цикл JQuery. Он добавляет следующее:

"<div id='1'>" + feedback + "</div>"

1-й вопрос. Я хочу увеличить идентификатор добавленного div после того, как первый был добавлен так, что первый добавленный идентификатор div равен 1, второй div id равен 2 и так далее.

Второй вопрос. Когда число div достигает 10, я хочу удалить первый добавленный div. Что в нашем случае:

<div id="1">php result</div> 

Это должно содержать цикл и удаление старых div.

Здесь цикл jquery ajax:

new get_fb(); 
function get_fb(){
    var feedback = $.ajax({
        type: "POST",
        url: "algorithm.php",
        async: false
    }).success(function(){
        setTimeout(function(){get_fb();}, 8000);
    }).responseText;
    $('#BuzFeed').append("<div id='1'>" + feedback + "</div>");
}
  • 1
    new не требуется.
Теги:
loops

1 ответ

2
Лучший ответ

Для подсчета:

var get_fb = (function() {
    var counter = 1;
    return function(){
        var feedback = $.ajax({
            ...
        }).responseText;
        $('#BuzFeed').append("<div id='" + counter + "'>" + feedback + "</div>");
    }
})();
get_fb();

и для автоматического снятия, после

var $buzfeed = $('#BuzFeed').append("<div id='" + counter + "'>" + feedback + "</div>");

Добавить

var $buzfeedDivs = $buzfeed.children('div');
if ($buzfeedDivs.length > 10) { $buzfeedDivs.first().remove(); }

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

var get_fb = (function() {
    var counter = 0;
    var $buzfeed = $('#BuzFeed');
    return function(){
        $.ajax({
            type: "POST",
            dataType: "html", // based on chat
            url: "algorithm.php"
        }).done(function(feedback) {
            counter += 1;
            var $buzfeedresults = $("<div id='BuzFeedResult" + counter + "'></div>");
            $buzfeedresults.text(feedback);
            $buzfeed.append($buzfeedresults);
            var $buzfeedDivs = $buzfeed.children('div');
            if ($buzfeedDivs.length > 10) { $buzfeedDivs.first().remove(); }
            setTimeout(get_fb, 8000);
        }).fail(function(jqXhr, textStatus, errorThrown) {
            var $buzfeedresults = $("<div id='BuzFeedError'></div>");
            $buzfeedresults.text('Error: ' + textStatus);
            if (typeof console !== 'undefined') {
                console.error(jqXhr, textStatus, errorThrown);
            }
        });
    };
})();
get_fb();
  • 2
    Это удалит div, который вы только что добавили. Я думаю, что вы хотите в first .
  • 0
    @JamesMontagne Спасибо.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню