gpt4 book ai didi

jquery - Tinysort按多个属性排序(超过1个)

转载 作者:行者123 更新时间:2023-12-01 00:08:17 25 4
gpt4 key购买 nike

我正在尝试使用tinysort作为我使用jquery mobile构建的移动应用程序的一部分。我的应用程序查找用户位置附近的地点,并且我希望能够快速对结果进行排序,而不必花时间重新查询数据库。

所以,我想做的是能够使用tinysort根据用户是否在该区域最喜欢的地方然后按距离重新排序结果,此外我希望能够按属性排序“benthere”如果用户标记他们去过某个地方。

这就是我想做的:按最爱排序:

$("ul#places>li").tsort('',({order:"desc",attr:"myfav"},{order:"asc",attr:"dist"}));

按去过那里排序:

$("ul#places>li").tsort('',({order:"desc",attr:"beenthere"},{order:"asc",attr:"dist"}));

默认排序://这很简单,没有问题:

$("ul#places>li").tsort('',{order:"desc",attr:"dist"});

默认列表顺序如下:

<ul id="places">
<li myfav="0" beenthere="0" dist=".02">Hot Dog Stand</li>
<li myfav="1" beenthere="0" dist=".08">Joe's Shack</li>
<li myfav="0" beenthere="1" dist=".10">Frick frack</li>
<li myfav="1" beenthere="1" dist=".15">Mama's</li>
</ul>

按最爱排序应返回:

  1. 乔的小屋
  2. 妈妈的
  3. 热狗摊
  4. 弗里克裂缝

按去过那里排序应该返回:

  1. 弗里克裂缝
  2. 妈妈的
  3. 热狗摊
  4. 乔的小屋

然后返回按距离排序:

  1. 热狗摊
  2. 乔的小屋
  3. 弗里克裂缝
  4. 妈妈的

我对上面 tsort 的调用无法与多个属性选择器一起使用,要么我的语法错误,要么您无法根据多个条件进行排序。

任何关于如何使用 tsort 或其他解决方案完成此任务的想法都将受到赞赏!

最佳答案

我知道 Mottie 的解决方案有效,但似乎有点复杂......调用 tsort 两次对我来说有效:

listOfItems.tsort({data:sorter, order:direction})
.tsort({data: sorterAlt, order:direction})

就您而言,它是(如果 '' 仅指所选项目,您可以删除它们):

$("ul#places>li").tsort({order:"desc",attr:"myfav"})
.tsort({order:"asc",attr:"dist"})
$("ul#places>li").tsort({order:"desc",attr:"beenthere"})
.tsort({order:"asc",attr:"dist"})

按照 Mottie 的建议,还可以使用 HTML5 的 data-attrname 样式。您始终可以在 tsort 中使用 data: attrname

希望它仍然可以帮助您或其他人!

关于jquery - Tinysort按多个属性排序(超过1个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7546232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com