2009-07-23 47 views
22

Tôi đã triển khai danh sách sắp xếp jQueryUI và nó hoạt động thực sự tốt đẹp. Tại một thời điểm nào đó, tôi muốn vô hiệu hóa việc sắp xếp và giữ nguyên thứ tự mục hàng hơn, mà người dùng không thể thay đổi nó.Làm thế nào để tắt sắp xếp với jQueryUI có thể sắp xếp?

Nó cố gắng một cái gì đó này:

$('.sortable').sortable('disable'); 

và điều này:

$('.sortable').each(function() { $(this).sortable('disable'); }); 

và:

$('.sortable').disable(); 

và:

$('.sortable').cancel(); 

và nhiều kết hợp khác nhau. Tất cả đều không thành công.

Bất cứ ai có thể cho biết ne The Right Way ™ để làm điều đó?

Cập nhật: Tôi đang sử dụng jQuery 1.3.2 và jQueryUI 1.7.2. Một vấn đề có thể xảy ra là tôi có hai danh sách có thể sắp xếp độc lập trên trang, vì vậy tôi có các lớp sortable1 và sortable2. Tôi đang thực sự làm:

$('.sortable2').sortable('disable'); 

Update2: vấn đề đã được tôi sử dụng .sortable thay vì #sortable. Tất cả mọi thứ hoạt động tốt ngay bây giờ.

+1

Lạ. tài liệu nói '.sortable ('disable')' http://docs.jquery.com/UI/Sortable#method-disable – seth

+1

Cách thứ nhất là ví dụ được đưa ra trong [tài liệu] [1]. Tôi vừa thử nghiệm nó với một trong những dự án của riêng tôi và nó hoạt động tốt. Bạn đang sử dụng phiên bản nào của jQuery và jQuery UI? Tôi có 1.3.2 và 1.7.2 tương ứng. [1]: http://jqueryui.com/demos/sortable/#method-cancel – shuckster

+0

+1 cho nhãn hiệu "The Right Way". – Andy

Trả lời

3

Cách đầu tiên là ví dụ được đưa ra trong documentation. Tôi vừa thử nghiệm nó với một trong những dự án của riêng tôi và nó hoạt động tốt. Bạn đang sử dụng phiên bản nào của jQuery và jQuery UI? Tôi có 1.3.2 và 1.7.2 tương ứng.

31
$(ui.sender).sortable("disable") 
+1

Bạn đá anh trai ... Làm việc cho tôi –

5

tôi là trong quá trình gỡ lỗi:

  1. nhấp chuột để thực hiện sắp xếp được
  2. kết thúc (sắp xếp được vô hiệu hóa)
  3. nhấp chuột để thực hiện có thể sắp xếp lại đã không làm việc
  4. giải pháp/cách giải quyết: thiết lập tùy chọn vô hiệu hóa để sai một cách rõ ràng

http://plnkr.co/edit/uX6cNNiYoejYqwQicEhg?p=preview

function sortableEnable() { 
    $("#sortable").sortable(); 
    $("#sortable").sortable("option", "disabled", false); 
    // ^^^ this is required otherwise re-enabling sortable will not work! 
    $("#sortable").disableSelection(); 
    return false; 
    } 
    function sortableDisable() { 
    $("#sortable").sortable("disable"); 
    return false; 
    } 

Hy vọng rằng sẽ giúp.

4

Cảm ơn Michal

Tôi đã tạo phiên bản cho các danh sách có thể sắp xếp hoặc chỉnh sửa được.

Rất hữu ích cho tôi ít nhất!

function sortableEnable() { 
     $("ul").sortable(); 
     $("ul").sortable("option", "disabled", false); 
     $("li").attr("contentEditable","false"); 
     $("li").css("cursor","move"); 
     return false; 
    } 

    function sortableDisable() { 
     $("ul").sortable("disable"); 
     $("li").attr("contentEditable","true"); 
     $("li").css("cursor","default"); 
     return false; 
    } 

    $(function() { 
     sortableEnable(); 
    }); 
+0

và để ẩn đường viền màu xanh lam khi nội dung có thể chỉnh sửa được sử dụng kiểu css này: [contenteditable]: focus {outline: 0px solid transparent; } –

1

Trong khi các bài đăng được đề xuất trước khi tôi hữu ích, họ không giải quyết được những gì tôi đang cố gắng đạt được. Tôi muốn bật và tắt có thể sắp xếp trên nhiều khu vực và thêm khả năng làm cho nội dung có thể chọn lại.

Dưới đây là đoạn code mà tôi đã sử dụng:

function AddSortable() { 

    $("ul").sortable({ 
     connectWith: "ul", 
     disabled: false 
    }).disableSelection(); 

    return false; 
}; 

function RemoveSortable(){ 

    $("ul").sortable({ 
     disabled: true 
    }).enableSelection(); 

    $("li").attr("contentEditable","true"); 

    return false; 
} 
+0

có thể sắp xếp ('bị tắt') sẽ không hoạt động đối với tôi, nhưng một đối tượng bị vô hiệu hóa: đúng là đã hoạt động. –

+0

Việc sử dụng 'contentEditable' là gì? –

0

Để vô hiệu hóa sortable() bạn có thể sử dụng

$(".sortable").sortable("disable");

Để chuyển đổi bật/tắt trên một nút bấm với id toggleButton

$('#toggleButton').click(function() { 
    //check if sortable() is enabled and change and change state accordingly 
    // Getter 
    var disabled = $(".sortable").sortable("option", "disabled"); 
    if (disabled) { 
    $(".sortable").sortable("enable"); 
    } 
    else { 
    $(".sortable").sortable("disable"); 
    } 
}); 
Các vấn đề liên quan