jQuery + Sortable + live

泪湿孤枕 提交于 2019-12-18 13:13:24

问题


I'm adding list items to a page dynamically with $.get, then appending them to the OL element. Pretty usual to this point.

But jQuery isn't aware of these new items when they get loaded into the page, and I'm not being able to make them sortable.

I made some trials with jQuery Live, but didn't get anywhere whit that...


回答1:


The refresh method of .sortable() does not seem to recognize li's which are NOT added via the .sortable() functions.

Try adding your .sortable() initialisation code into a function which you call on document ready AND in you code where you dynamically add li's.

Instead of:

jQuery(document).ready(function() {
    jQuery("#mySortableOL").sortable({
        ...
    });
}
...
jQuery("#mySortableOL").append(...);
jQuery("#mySortableOL").sortable("refresh");

Try something like:

jQuery(document).ready(function() {
    jQuery("#mySortableOL").doSort();
}
...
jQuery("#mySortableOL").append(...);
doSort();
...
function doSort(){
    jQuery("#mySortableOL").sortable({
        ...
    });
}



回答2:


Did you try .sortable('refresh')? http://docs.jquery.com/UI/Sortable#method-refresh




回答3:


on the tail end of your code just append .sortable({}); with all your parameters respecified. There's probably a way to do this without duplicating your code by using a function or something, but at least this works.

$('#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();
)};



回答4:


I found this solution and working fine for me.

makesortable = function(){
        $( "#mylist" ).sortable({
            ...
        })
      };
...
// after list refresh :
makesortable();


来源:https://stackoverflow.com/questions/1672182/jquery-sortable-live

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!