拖动和排序在javascript中不起作用

时间:2017-05-02 10:09:25

标签: javascript jquery sorting drag

当我通过ajax插入数据时,我使用了

$( "#example_wrap" ).load(window.location.href + " #example" );

重新加载一个div,但在这之后,我对列表进行拖动和排序是行不通的,所以我只是用了

        sort_table;
        $('#example tbody').sortable('destroy');        
        $('#example tbody').unbind();
        sort_table;

排序函数分配给变量sort_table

sort_table =
$( "#example tbody" ).sortable({
    axis: 'y',
    update: function (event, ui) {
        var self = $(this)[0];
        var tr = $(self).find('tr');

        topnews_a = [];
        var order = 1;
        $(tr).each(function(){
            var content_id = parseInt( $(this).attr('content_id') );
            var order_id = order;

            topnews_a.push({
                content_id: content_id,
                order_id: order_id,
            });
            order++;
        });
        var topnews_obj = JSON.stringify(topnews_a);
        var data_a = {
            topnews: topnews_obj
        }



        $.ajax({
            type:"POST",
            url: base_url+"topnews/do_order",
            data: data_a,
            beforeSend:function(){
                //$('.clearClassBlock').html('<div class="alert alert-danger alert-dismissable">Select A Section.</div>');
            },
            complete:function(){

            },
            success:function(x){
                alert('Order Changed Successfully');
            },
            error:function(x){

            }
        });
    }
});

1 个答案:

答案 0 :(得分:0)

第一件事:根据MDN,未命名的函数(分配给变量的函数)应附加到事件以进行回调。

之后

  

排序函数分配给变量sort_table

一旦将此函数分配给变量,这不是排序函数,它现在是函数表达式,因为定义没有函数关键字作为第一个语句。

当你调用没有()的变量时,它会返回表达式定义作为你要求变量的值(不调用函数)。

所以你需要调用你的函数表达式。 sort_table(); sort_table应在您调用之前声明。

此外,您可以参考Microsoft's documentation了解如何命名javascript函数并立即执行它?