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