它似乎应该有效,但它没有做任何事情。
我有一个函数,当页面使用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。
答案 0 :(得分:1)
$(document).ready()在页面加载时,您要做的是调用构建列表的函数(在javascript中),然后在构建后调用sortable函数。
答案 1 :(得分:1)
您需要在创建动态列表项后绑定 之后的可排序。否则,当您绑定sortable时,它不知道要绑定哪个元素,因为该元素不存在。
还有一项改进。如果只希望<ul>
元素能够排序,则可以将sortable绑定到父<li>
元素。
请尝试以下方法。
$('#sortable').sortable({
items: ' > li',
});
说完后它应该正常工作,因为默认值为> *
。您可以阅读更多over here。