JQuery + Sortable + live
Я добавляю элементы списка на страницу динамически с помощью $.get, а затем добавляю их к элементу OL. Довольно обычный до этого момента.
Но jQuery не знает об этих новых элементах, когда они загружаются на страницу, и я не могу сделать их отсортированными.
Я провел несколько испытаний с jQuery Live, но не получил ничего, что...
Ответы
Ответ 1
Метод 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({
...
});
}
Ответ 2
Вы пытались .sortable('refresh')?
http://docs.jquery.com/UI/Sortable#method-refresh
Ответ 3
в конце вашего кода просто добавьте .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();
)};
Ответ 4
Я нашел это решение и отлично работал у меня.
makesortable = function(){
$( "#mylist" ).sortable({
...
})
};
...
// after list refresh :
makesortable();