问题
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