2009-11-04 34 views
10

Tôi đang thêm các mục danh sách vào một trang động với $ .get, sau đó thêm chúng vào phần tử OL. Khá bình thường đến thời điểm này.jQuery + Sắp xếp + trực tiếp

Nhưng jQuery không nhận thức được các mục mới này khi chúng được tải vào trang và tôi không thể làm cho chúng có thể sắp xếp.

Tôi đã thực hiện một số thử nghiệm với jQuery Live, nhưng không nhận được bất cứ đâu ...

Trả lời

16

Phương pháp refresh của .sortable() dường như không nhận ra li 's mà không được thêm vào thông qua .sortable() chức năng.

Hãy thử thêm .sortable() mã khởi tạo của bạn vào một hàm mà bạn gọi trên tài liệu đã sẵn sàng VÀ trong mã mà bạn tự động thêm li 's.

Thay vì:

jQuery(document).ready(function() { 
    jQuery("#mySortableOL").sortable({ 
     ... 
    }); 
} 
... 
jQuery("#mySortableOL").append(...); 
jQuery("#mySortableOL").sortable("refresh"); 

Hãy thử một cái gì đó như:

jQuery(document).ready(function() { 
    jQuery("#mySortableOL").doSort(); 
} 
... 
jQuery("#mySortableOL").append(...); 
doSort(); 
... 
function doSort(){ 
    jQuery("#mySortableOL").sortable({ 
     ... 
    }); 
} 
+1

Nó không chỉ là LI, nó là cơ bản tất cả mọi thứ, nhưng cách tiếp cận là chính xác và làm việc. –

0

ở đầu đuôi mã của bạn chỉ cần gắn thêm .sortable({}); với tất cả các tham số của bạn được xác nhận lại. Có lẽ một cách để làm điều này mà không cần sao chép mã của bạn bằng cách sử dụng một chức năng hoặc một cái gì đó, nhưng ít nhất là công trình này.

$('#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(); 
)}; 
-2

tôi tìm thấy giải pháp này và làm việc tốt cho tôi.

makesortable = function(){ 
     $("#mylist").sortable({ 
      ... 
     }) 
     }; 
... 
// after list refresh : 
makesortable(); 
Các vấn đề liên quan