我的函数说未捕获的TypeError:$(...)。reverse不是函数

时间:2018-09-12 01:21:36

标签: javascript jquery

    <script>
    $(document).ready(function () {
        $("#upBtn").click(function () {
            $("input:checked").each(function () {
                moveUp(this);
            })
        })
        $("#downBtn").click(function () {
            $("input:checked").reverse().each(function () {
                moveDown(this);
            })
        })
    });

    function moveUp(v) {
        let temp = $(v).parent().parent();
        temp.prev().before(temp);
    }

    function moveDown(v) {
        let temp = $(v).parent().parent();
        temp.next().after(temp);
    }
</script>

moveUp方法很正常。

但是当我使用moveDown时,Chrome控制台会显示

  

未捕获的TypeError:$(...)。反向不是函数。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:2)

jQuery没有reverse()可以在jQuery对象上运行。

也许您的意思是$('input:checked').get().reverse(),它将对象转换为基本数组,然后将其反转。当然,为了对其调用each()(一种jQuery方法),您必须将其转换回jQuery对象:

$( $('input:checked').get().reverse() ).each(function(){…})

不过,另一种选择是不使用each()并使用普通JavaScript:

$('input:checked').get().reverse().forEach(elem=>{
  moveDown(elem)
})