2015-02-07 55 views
0

因此,我正在从一本书中使用TaffyDB创建一个人的集合的项目。该项目是一个简单的聊天室,用户列表以窗口中的在线用户的html列表的形式生成。目前我正在使用假数据进行测试,并且每个循环(在jquery中)都有一个正常工作的循环,向屏幕上打印五个“头像”。然而,我的每个打印在线用户的循环运行两次:为什么是这样?这两个循环使用完全相同的设置,但第二个循环运行两次。每个循环的TaffyDB jquery运行两次

的每一个的作品:

people_db().each(function(person,idx){ 
     var class_list; 
     if(person.get_is_anon()){ return true; } 
     class_list = ['spa-avtr-box']; 

     if(person.id === chatee.id){ 
      class_list.push('spa-x-is-user'); 
     } 

     $box = $('<div/>') 
      .addClass(class_list.join(' ')) 
      .css(person.css_map) 
      .attr('data-id', String(person.id)) 
      .prop('title', spa.util_b.encodeHtml(person.name)) 
      .text(person.name) 
      .appendTo($nav); 
    }); 

运行两次循环:

people_db().each(function(person,idx){ 

     var select_class = ''; 

     console.log(person); 

     if(person.get_is_anon() || person.get_is_user()) { 
      return true; 
     } 

     if(chatee && chatee.id === person.id){ 
      select_class = 'spa-x-select'; 
     } 

     list_html 
      += '<div class="spa-chat-list-name' 
      + select_class + '" data-id="' + person.id + '">' 
      + spa.util_b.encodeHtml(person.name) + '</div>'; 
    }); 

    if(!list_html){ 
     list_html = String() 
     + '<div class="spa-chat-list-note">' 
     + 'To chat alone is the fate of all great souls...<br><br>' 
     + 'No one is online' 
     + '</div>'; 

     clearChat(); 
    } 
    jqueryMap.$list_box.html(list_html); 
} 

任何想法我做错了吗?我已经广泛地浏览了其余的代码,而且我没有两次调用它,我几乎可以确定必须是循环的东西。

回答

0

我会先确定你没有调用过两次。 如果你看看控制台,

console.log(person); 

打印两次? 如果是这样拆散无论是调用

people_db().each(function(person,idx){ 

绑定之前。