wake-up-neo.com

Wie deaktiviere ich die Sortierung mit jQueryUI sortable?

Ich habe jQueryUI sortierbare Liste implementiert und es funktioniert wirklich gut. Irgendwann möchte ich die weitere Sortierung deaktivieren und die Artikelreihenfolge beibehalten, ohne dass der Benutzer sie ändern kann.

Es hat folgendes versucht:

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

und das:

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

und:

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

und:

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

und verschiedene Kombinationen von all dem. Alles ohne Erfolg.

Kann mir jemand ne Auskunft geben Der richtige Weg™, um es zu tun?

Update: Ich verwende jQuery 1.3.2 und jQueryUI 1.7.2. Ein mögliches Problem könnte sein, dass ich zwei unabhängige sortierbare Listen auf der Seite habe, also sortierbare Klassen 1 und 2. Ich mache eigentlich:

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

Update2: Das Problem war ich mit .sortable anstelle von #sortable. Alles funktioniert jetzt gut.

23
Milan Babuškov

Der erste Weg ist das Beispiel in der Dokumentation . Ich habe es gerade mit einem meiner eigenen Projekte getestet und es funktioniert gut. Welche Versionen von jQuery und jQuery UI verwenden Sie? Ich habe 1.3.2 und 1.7.2.

1
shuckster
$(ui.sender).sortable( "disable" )
32
isxaker

Ich war gerade dabei, zu debuggen:

  1. klicken, um sortierbar zu machen
  2. fertig stellen (sortierbares deaktivieren)
  3. klick um wieder sortierbar zu machen hat nicht funktioniert
  4. lösung/Problemumgehung: Setzen Sie die Option disabled explizit auf false

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

Hoffentlich hilft das.

10
Michal Stefanow

Danke, Michal

Ich habe eine Version für Listen erstellt, die entweder sortierbar oder editierbar ist.

Sehr nützlich für mich zumindest!

    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();
    });
4
Chris Glasier

Die vor mir vorgeschlagenen Beiträge waren zwar nützlich, lösten jedoch nicht das, was ich erreichen wollte. Ich wollte sortierbar über mehrere Bereiche ein- und ausschalten und die Möglichkeit hinzufügen, Inhalte wieder auswählbar zu machen. 

Hier ist der Code, den ich verwendet habe:

function AddSortable() {

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

    return false;
};

function RemoveSortable(){

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

    return false;
}
2
Andi

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

von http://api.jqueryui.com/sortable/#option-disabled

2
isync

Um sortable() zu deaktivieren, können Sie verwenden

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

Aktivieren/Deaktivieren beim Klicken auf eine Schaltfläche mit der 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");
  }
});
1
Rahul Gupta

Wenn Sie alle sortables deaktivieren möchten, können Sie die sortables-Klasse "ui-sortable" als Selektor verwenden.

z.B

$(".ui-sortable").sortable("enable");
$(".ui-sortable").sortable("disable");
0
VorTechS