jQuery + Сортируемый + живой
-
16-09-2019 - |
Вопрос
Я добавляю элементы списка на страницу динамически с помощью $.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();