我有一个脚本,它将根据数据属性对div列表进行排序。排序函数与基于ID的可点击div相关联。目前,当我单击其中一个div时,项目将正确排序,但只能排序一次。按升序排序(向上)后,我无法按降序排序(向下),除非我刷新页面。 jsfiddle:https://jsfiddle.net/4ttjxwme/2/ 以下是脚本,感谢任何帮助!
<script>
$(document).ready(function () {
$("#down").on('click', function(){
var sortedDivsDown = $(".unsorted").find("div").toArray().sort(sorterDown);
$.each(sortedDivsDown, function (index, value) {
$(".loanIndicators ").append(value);
});
function sorterDown(b, a) {
return b.getAttribute('rel') - a.getAttribute('rel');
};
});
});
$(document).ready(function () {
$("#up").on('click', function(){
var sortedDivsUp = $(".unsorted").find("div").toArray().sort(sorterUp);
$.each(sortedDivsUp, function (index, value) {
$(".loanIndicators ").append(value);
});
function sorterUp(a, b) {
return a.getAttribute('rel') - b.getAttribute('rel');
};
});
});
</script>
答案 0 :(得分:1)
由于您正在使用sortedArrays var sortedDivsDown = $(".unsorted").find("div").toArray().sort(sortDown);
的jquery对象引用,第二次,.unsorted
div元素为空,元素现在位于.loanIndicators
div中。
您可以使用以下选择器找到indicator
div元素:
var sortedDivsDown = $(".unsorted,.loanIndicators").find("div").toArray().sort(sortDown);
var sortedDivsUp = $(".unsorted,.loanIndicators").find("div").toArray().sort(sortUp);
这将适用于您的情况,因为所有元素都将位于两个div元素之一。
这是一个有效的JSFiddle