点击onclick只工作一次

时间:2016-06-13 20:21:29

标签: jquery sorting onclick

我有一个脚本,它将根据数据属性对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>

1 个答案:

答案 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