微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery刷新正在创建不必要的无限循环

如何解决jQuery刷新正在创建不必要的无限循环

| 我有一个要刷新的好友列表。每次刷新后,便开始将相同的名称添加到列表中,而不仅仅是刷新函数。任何想法都很棒,或者我只是想念完整的东西?
$(function() {

$(\'<div />\').html(\'<div id=\"buddies\" class=\"buddies\" style=\"vertical-align:bottom\"><div class=\"imheader\">&nbsp;Online Favorites<span class=\"fr\"><a href=\"#\" id=\"exitlist\">X</a></span></div><div class=\"imheader2\"><div class=\"imheaderspan\"><a href=\"#\">Options</a></div></div><ul class=\"imwindow\"><div id=\"myonlinefavs\"></div></ul></div><div id=\"chatbar\" class=\"chatbar\"><div id=\"ims\"></div><div class=\"buddylist\" id=\"buddylist\"><center><a href=\"#\" id=\"im-menu\" class=\"im-menu\">Favorites (<strong id=\"friendsonline\">0</strong>)</a></center></div></div>\').appendTo(\'body\');

var imRoot = $(\"#im-menu\");
var buddies = $(\"#buddies\");
imRoot.click(function(){
buddies.toggle();
imRoot.blur();
return( false );
});
$(\"#exitlist\").click(function(){
buddies.toggle();
imRoot.blur();
return( false );
});
$(document).click(function( event ){
if (buddies.is( \":visible\" ) && !$( event.target ).closest( \"#buddies\" ).size()){
buddies.hide();
}
});
$(function FL(){
$.ajax({
    type: \'POST\',url: \'config/receive_buddylist.PHP\',cache: \'false\',dataType: \'json\',success: function(data){    
        onlineNumber = buddylistreceived = 0;
        data && $.each(data,function(i,e){
            if (i == \"buddylist\") {
                buddylistreceived = 1;
                totalFriendsNumber = onlineNumber = 0;
                $.each(e,function (l,f) {
                    if(f.id != null){
                        longname = f.n.length > 16 ? f.n.substr(0,16) + \"...\" : f.n;
                        $(\'#myonlinefavs\').append(\'<li>\' + longname + \'</li>\');
                    }
                    if(f.s == \'0\') onlineNumber++;
                    totalFriendsNumber++;                           
                });
            }
        });
        R = onlineNumber;
        if (R > 0){
            $(\'#friendsonline\').html(onlineNumber);
        } else {
            $(\'#myonlinefavs\').html(\'No favorites online.\');
            $(\'#friendsonline\').html(\'0\');
        }
    }
});
Z = setTimeout(function () {
    FL()
},1000)

});


});
    

解决方法

在将列表项追加到
myonlinefavs
元素的
$.each
函数之前,应清除列表,如下所示:
$(\'#myonlinefavs\').html(\"\")
。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。