你可以在使用不同jquery函数的列表上使用jquery的sortable吗?

时间:2014-04-08 23:49:06

标签: jquery html jquery-ui-sortable

它似乎应该有效,但它没有做任何事情。

我有一个函数,当页面使用SQL数据库中的名称加载时会生成一个列表。

var contentString = "<div id='priorityDiv'><ul id='sortable' class='connectedSortable'>";

for (var cntr = 0; cntr < listOfPeople.length; cntr++) 
{
     contentString = contentString + "<li class='ui-state-default' id='user_" + cntr + "'>" + listOfPeople[cntr].userFullName + "</li>"
}
contentString = contentString + "</ul></div>";

然后我将contentString附加到div,并且当页面加载后检查html时,它工作得很好并且看起来很好。有一个ul可排序列表,里面有正确的列表项。

然后,在脚本部分我只是:

$(document).ready(function () {
    $("#sortable").sortable(
        {
        update: function () {
            var order = $('#sortable').sortable('toArray').toString();

            alert("Order:" + order);
        }

    }  
    ).disableSelection();
});

中间的东西是告诉我列表的已知顺序。因此列表显示在页面上,但没有一个项目是可移动的或可排序的。即使我只是把

$(document).ready(function () {
$('#sortable').sortable();
});

它仍然没有做任何事情。我在文件中有jquery 1.9.2。

2 个答案:

答案 0 :(得分:1)

$(document).ready()在页面加载时,您要做的是调用构建列表的函数(在javascript中),然后在构建后调用sortable函数。

答案 1 :(得分:1)

您需要在创建动态列表项后绑定 之后的可排序。否则,当您绑定sortable时,它不知道要绑定哪个元素,因为该元素不存在。

还有一项改进。如果只希望<ul>元素能够排序,则可以将sortable绑定到父<li>元素。

请尝试以下方法。

$('#sortable').sortable({
    items: ' > li',
});

说完后它应该正常工作,因为默认值为> *。您可以阅读更多over here