使用JQuery对列表项进行排序

时间:2011-08-26 19:18:24

标签: javascript jquery jquery-ui jquery-ui-sortable

我正在尝试使用JQuery UI Sortable插件,允许用户通过用鼠标拖动来更改顺序或列表项。有问题的页面可用here

相关的JQuery代码在webapp.js

$("#preferences_list").sortable({
            placeholder: "placeholder",
            forcePlaceholderSize: true,
            update: function(event, ui) {
                var order = $(this).sortable("serialize", {key:'list'});
                $.post("/mypreferences/reorder/", order);
            }
        });
$("#preferences_list").disableSelection();

这应该允许用户通过使用arrow image向上或向下拖动类别来重新排序类别(当在新位置删除类别时,会触发AJAX请求。)

上面的代码与sortable plugin's demo page上显示的代码相同,但出于某种原因,它根本无法正常工作

3 个答案:

答案 0 :(得分:4)

你在widget.js之前加载了sortable.js。可排序取决于小部件,因此必须首先包含widget.js。只需重新排序脚本标记。

答案 1 :(得分:4)

可能还有其他问题,但首先要改变:

<script type="text/javascript" src="myPreferences_files/jquery-ui-sortable-1.js"></script> 
<script type="text/javascript" src="myPreferences_files/jquery-ui-widget-1.js"></script> 

为:

<script type="text/javascript" src="myPreferences_files/jquery-ui-widget-1.js"></script> 
<script type="text/javascript" src="myPreferences_files/jquery-ui-sortable-1.js"></script> 

答案 2 :(得分:0)

在您创建的页面上查看Firebug:有4个错误。例如:

  

jquery-ui-sortable-1.js:17 - 未捕获TypeError:对象函数(a,b){return new e.fn.init(a,b,h)}没有方法'widget'

你确定你有 jquery.ui.widget.js 吗?