在附加div时,删除超过10的旧附加div

时间:2013-10-23 20:21:13

标签: javascript jquery loops html

考虑以下JQuery循环。它附加了这个:

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

第1个问题。 我想在附加第一个div之后增加附加div的id,以便第一个附加div的id为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 个答案:

答案 0 :(得分: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();