Вопрос

Я добавляю элементы списка на страницу динамически с помощью $.get, затем добавляю их к элементу OL.Довольно обычно на данный момент.

Но jQuery не знает об этих новых элементах, когда они загружаются на страницу, и я не могу сделать их сортируемыми.

Я провел несколько проб с jQuery Live, но ничего из этого не вышло...

Это было полезно?

Решение

В refresh способ .sortable() кажется, не признает liкоторые НЕ добавляются через .sortable() функции.

Попробуйте добавить свой .sortable() код инициализации в функцию, которую вы вызываете в document ready, И в свой код, где вы динамически добавляете li's.

Вместо того , чтобы:

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({
        ...
    });
}

Другие советы

Вы пробовали .sortable('обновить')?http://docs.jquery.com/UI/Sortable#method-refresh

в конце вашего кода просто добавьте .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();
)};

Я нашел это решение, и оно отлично работает для меня.

makesortable = function(){
        $( "#mylist" ).sortable({
            ...
        })
      };
...
// after list refresh :
makesortable();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top