2009-07-23 15 views
22

He implementado la lista ordenable jQueryUI y funciona muy bien. En algún momento, deseo deshabilitar la clasificación adicional y mantener el orden del artículo como está, sin que el usuario pueda cambiarlo.¿Cómo desactivar la ordenación con jQueryUI ordenable?

intentó algo esto:

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

y esto:

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

y:

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

y:

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

y varias combinaciones de todo eso. Todo sin éxito.

¿Alguien puede decir ne The Right Way ™ para hacerlo?

Actualización: Estoy usando jQuery 1.3.2 y jQueryUI 1.7.2. Un posible problema podría ser que tengo dos listas ordenables independientes en la página, así que tengo las clases sortable1 y sortable2. En realidad estoy haciendo:

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

Update2: el problema se me .sortable utilizando en lugar de #sortable. Todo funciona bien ahora

+1

Weird. docs say '.sortable ('disable')' http://docs.jquery.com/UI/Sortable#method-disable – seth

+1

La primera forma es el ejemplo dado en la [documentation] [1]. Acabo de probarlo con uno de mis propios proyectos y funciona bien. ¿Qué versiones de jQuery y jQuery UI está usando? Tengo 1.3.2 y 1.7.2 respectivamente. [1]: http://jqueryui.com/demos/sortable/#method-cancel – shuckster

+0

+1 por la marca registrada "The Right Way". – Andy

Respuesta

3

La primera es el ejemplo dado en el documentation. Acabo de probarlo con uno de mis propios proyectos y funciona bien. ¿Qué versiones de jQuery y jQuery UI está usando? Tengo 1.3.2 y 1.7.2 respectivamente.

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

Rocas hermano ... Trabajó para mí –

5

yo estaba en el proceso de depuración:

  1. Hacer clic para sortable
  2. acabado (deshabilitar ordenable)
  3. clic para hacer ordenable de nuevo no funcionó
  4. solución/solución: establecer la opción desactivada en false de forma explícita

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; 
    } 

Espero que ayude.

4

Gracias Michal

me hizo una versión para las listas que pueden ser o bien se puede ordenar o editable.

¡Muy útil para mí al menos!

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

y para ocultar el borde azul cuando el contenido es editable usa este estilo css: [contenteditable]: focus {outline: 0px solid transparent; } –

1

Si bien las publicaciones sugeridas antes que yo fueron útiles, no resolvieron lo que estaba tratando de lograr. Quería activar y desactivar clasificables en varias áreas y agregar la capacidad de hacer que el contenido sea seleccionable nuevamente.

Este es el código que he utilizado:

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

ordenable ('deshabilitado') no funcionaría para mí, pero un objeto con deshabilitado: true funcionó. –

+0

¿De qué sirve 'contentEditable'? –

0

Para desactivar sortable() puede utilizar

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

Para alternar activar/desactivar en el clic de un botón con 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"); 
    } 
}); 
Cuestiones relacionadas