从Ajax调用返回的Jquery代码不起作用

时间:2016-05-22 00:00:58

标签: jquery ajax jquery-ui-sortable

我正在使用Jquery UI可排序:

  $("ul.filter_age").sortable({
    handle: ".handle",
    update: function (event, ui) {

        var data = $('#formage').serialize();

        $.ajax({

            data:   data,
            type:   'POST',
            url:    '/path/to/php/script',
            success:function(data) {

                $('#age_form').html(data);

            }

        });

    }

  });

因此,一旦某人执行排序,我就会调用一个php脚本来获取信息并更新数据库中的视图顺序。然后我从数据库中获取所有数据并将其输出回jquery脚本,以便他们可以看到更新的视图顺序。但是,当发生这种情况时,可排序脚本不再有效。在ajax更新之后我无法拖动列表。

所以问题是,如何通过jquery / ajax进行调用并返回html替换现有的html并使sortables仍然有效?返回的html与原始的可排序html相同。我是否必须在成功函数中重新初始化可排序的jquery代码?

1 个答案:

答案 0 :(得分:0)

好的我做的是将它放入一个函数并以这种方式调用它。如果这是最佳方式,或者有更好的方法,请告诉我。谢谢!

function updateAgeSort() {
$("ul.filter_age").sortable({
    handle: ".handle",
    update: function (event, ui) {

        var data = $('#formage').serialize();

        $.ajax({

            data:   data,
            type:   'POST',
            url:    '/path/to/php/script',
            success:function(data) {

                $('#age_form').html(data);

                updateAgeSort();

            }

        });

    }

  });
}

updateAgeSort();