我正在使用$ .get动态地将列表项添加到页面,然后将它们附加到OL元素。很平常到这一点。
但jQuery在加载到页面时并不知道这些新项目,而且我无法将它们排序。
我使用jQuery Live进行了一些试验,但没有得到任何结果......
答案 0 :(得分:18)
refresh
.sortable()
方法似乎无法识别li
未通过.sortable()
函数添加的方法。
尝试将您的.sortable()
初始化代码添加到您调用文档就绪的函数中,并在您动态添加li
的代码中添加。
而不是:
jQuery(document).ready(function() {
jQuery("#mySortableOL").sortable({
...
});
}
...
jQuery("#mySortableOL").append(...);
jQuery("#mySortableOL").sortable("refresh");
尝试类似:
jQuery(document).ready(function() {
jQuery("#mySortableOL").doSort();
}
...
jQuery("#mySortableOL").append(...);
doSort();
...
function doSort(){
jQuery("#mySortableOL").sortable({
...
});
}
答案 1 :(得分:6)
你试过.sortable('刷新')? http://docs.jquery.com/UI/Sortable#method-refresh
答案 2 :(得分:0)
只需附加.sortable({});
并重新指定所有参数。可能有一种方法可以通过使用函数或其他东西来复制代码,但至少可以这样做。
$('#List').live('click',function(e){
var myHTMLcode = '<li>New Item</li>'
myHTMLcode.appendTo('#List').sortable({
items : 'li',
axis : 'xy',
update : function(event, ui){SPECIFIC Sortable FUNCTION CODE HERE}).fadeIn();
)};
答案 3 :(得分:-2)
我找到了这个解决方案并且对我来说很好。
makesortable = function(){
$( "#mylist" ).sortable({
...
})
};
...
// after list refresh :
makesortable();