Jos*_*hua 4 jquery jquery-plugins jquery-mobile
我正在尝试使用tinysort作为我使用jquery mobile构建的移动应用程序的一部分.我的应用程序找到了用户位置附近的位置,我希望能够快速对结果进行排序,而无需花时间重新查询数据库.
所以,我想要做的是能够使用tinysort重新排序结果,如果用户在该区域中有一个最喜欢的位置,然后是距离,另外我希望能够按属性"beenthere"进行排序用户已标记他们去过一个地方.
这就是我想要做的事情:按收藏排序:
$("ul#places>li").tsort('',({order:"desc",attr:"myfav"},{order:"asc",attr:"dist"}));
Run Code Online (Sandbox Code Playgroud)
排序方式:
$("ul#places>li").tsort('',({order:"desc",attr:"beenthere"},{order:"asc",attr:"dist"}));
Run Code Online (Sandbox Code Playgroud)
默认排序://这很简单,没有问题:
$("ul#places>li").tsort('',{order:"desc",attr:"dist"});
Run Code Online (Sandbox Code Playgroud)
使用默认列表顺序,如:
<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>
Run Code Online (Sandbox Code Playgroud)
排序方式应该返回:
排序方式应该返回:
然后回到按距离排序:
我对上面的tsort的调用只是不使用多个属性选择器,我的语法错误或者你不能对多个标准进行排序.
任何有关如何通过tsort或其他解决方案实现此目标的想法表示赞赏!
我知道Mottie的解决方案有效,但看起来有点复杂......两次调用tsort对我有用:
listOfItems.tsort({data:sorter, order:direction})
.tsort({data: sorterAlt, order:direction})
Run Code Online (Sandbox Code Playgroud)
在你的情况下,它是(如果''只是引用选定的项目,你可以删除它们):
$("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"})
Run Code Online (Sandbox Code Playgroud)
data-attrname正如Mottie建议的那样,也使用HTML5 的样式.你总是可以data: attrname在tsort里面使用.
希望它仍然可以帮助你或他人!