2013-12-21 80 views
1

所以我注意到在用list.js对一堆东西进行排序时,它会在Chrome中排序有点奇怪。List.js在Chrome中没有正确排序

这里有一个演示:
http://jsfiddle.net/xku3R/

如果按类别在顶部,因为名单已经在标题的字母顺序排序,然后按类别没有什么应该发生。这在Firefox和Safari中按照预期工作,但不在Chrome中。 Chrome会以某种奇怪的方式按标题重新排序。

然后我发现,如果我删除与设计中的最后一项类别,它会像预期的那样:
http://jsfiddle.net/5s5tB/

什么会导致这种行为?

JS

var articleList = new List('articlelist', {valueNames: [ 'category', 'title' ]}); 

$('span.sort').click(function() { 
    var value = $(this).data('sort'); 
    if(value == 'category') { 
     articleList.sort('title', { asc: true }) 
     articleList.sort(value, { asc: true }) 
    } else { 
     articleList.sort(value, { asc: true }) 
    } 
}); 


HTML

<ul> 
    <li class="category"> 
     <span class="sort" data-sort="category">Category</span> 
    </li> 
    <li class="overflow"> 
     <span class="sort" data-sort="title">Title</span> 
    </li> 
</ul> 

<main id="articlelist"> 
    <ul class="list"> 
     <li> 
      <span class="category">Architecture</span> 
      <span class="overflow"> 
       <a class="title" href="http://someurl.com/djennes-mud-mosque/">Djenné’s Mud Mosque</a> 
      </span> 
     </li> 
     <li> 
      <span class="category">Architecture</span> 
      <span class="overflow"> 
       <a class="title" href="http://someurl.com/previ/">PREVI</a> 
      </span> 
     </li> 
     <li> 
      <span class="category">Architecture</span> 
      <span class="overflow"> 
       <a class="title" href="http://someurl.com/revolutionary-housing-argentina/">Revolutionary housing in Argentina</a> 
      </span> 
     </li> 
     <li> 
      <span class="category">Architecture</span> 
      <span class="overflow"> 
       <a class="title" href="http://someurl.com/high-line/">The High Line</a> 
      </span> 
     </li> 
     <li> 
      <span class="category">Cities</span> 
      <span class="overflow"> 
       <a class="title" href="http://someurl.com/edge-city-sao-paulo/">Edge City (São Paulo)</a> 
      </span> 
     </li> 
     <li> 
      <span class="category">Cities</span> 
      <span class="overflow"> 
       <a class="title" href="http://someurl.com/istanbul/">Istanbul</a> 
      </span> 
     </li> 
     <li> 
      <span class="category">Cities</span> 
      <span class="overflow"> 
       <a class="title" href="http://someurl.com/jenin/">Jenin</a> 
      </span> 
     </li> 
     <li> 
      <span class="category">Cities</span> 
      <span class="overflow"> 
       <a class="title" href="http://someurl.com/rebuilding-beirut/">Rebuilding Beirut</a> 
      </span> 
     </li> 
     <li> 
      <span class="category">Cities</span> 
      <span class="overflow"> 
       <a class="title" href="http://someurl.com/shenzhen/">Shenzhen</a> 
      </span> 
     </li> 
     <li> 
      <span class="category">Cities</span> 
      <span class="overflow"> 
       <a class="title" href="http://someurl.com/unreal-estate-london/">Unreal Estate (London)</a> 
      </span> 
     </li> 
    </ul> 
</main> 
+1

Linux上的Chrome:不可重现,按预期工作。 – punund

+0

@punund谢谢,很高兴知道。我在OSX上使用31.0.1650.63。你检查了两个小提琴吗? http://jsfiddle.net/xku3R/是一个不工作。 – INT

+0

对我也适用,窗户上的镀铬 – Ani

回答

0

您使用Chrome的排序不是稳定的,这意味着排序第二次不一定会保持在第一次创建的顺序打分类。此外,我无法找到任何list.js指出它实现稳定排序。 Sorting an array of objects in Chrome