jQuery UI Sortable - - Error: kann nicht zum aufrufen von Methoden auf sortierbare vor initialization; attempted to call method 'disable'

Ich habe ein jQuery-UI-Sortable element in der Liste wird dynamisch gefüllt, die aus einem Ajax-request.

Derzeit ist der workflow geht

  1. Benutzer klickt auf Schaltfläche Liste wird gefüllt und sortiert nach den angegebenen Einstellungen.
  2. Benutzer klickt auf einen anderen button,
    1. Vorhandene Liste <li> Elemente werden gelöscht, indem jQuery.empty() nennen
    2. Neue Daten einfügen von Werten in neue <li> Liste der Elemente und an <ul> Liste
    3. Sortierbare Liste aktualisiert wird via $("#sortable").sortable("refresh");

Gegeben eine Sortierbare Liste Objekt $("#avail_list").sortable( ... ); will ich haben Liste spezieller Elemente' draggable Eigenschaft deaktiviert und die Deckkraft einstellen auf 0,5, basierend auf den vorhandenen Werten in andere Elemente.

Um dies zu tun, ich habe die folgende Funktion:

var disabled = [];
var appendString = ""
if (avail.length > 0) {
  for (var i = 0; i < avail.length; i++) {

    //check if current list element exists in existing value list. True results
    //in grayed out and non-draggable element
    compareMatch = checkMatch(avail[i], compare);

    if (compareMatch)
      disabled.push(list + "open_" + avail[i].id);


    appendString += "<li id = "+ list + "open_" + avail[i].id + 
      " class = 'avail_list_element'><img class = 'logo' src = /static/images/vendor_logo/" + avail[i].icon + " /></li>"
  }

  $("#avail_list").append(appendString);

} 

$("#avail_list").sortable("refresh");   

if (disabled.length > 0)
    disableDraggable(disabled);

function disableDraggable(elements){
  for (var i = 0; i < elements.length; i++) {
    console.log(elements[i])
    $("#" + elements[i]).sortable("disable");
    $("#" + elements[i]).fadeTo("fast", 0.5);
  }
}

Allerdings führt dies zu einem Fehler

Error: cannot call methods on sortable prior to initialization; 
attempted to call method 'disable'

Da rief ich refresh auf die sortierbare Liste vor, um die Deaktivierung der Elemente, wie können die sortable Objekt nicht initialisiert werden?

  • Rufen Sie sortierbar auf $("#avail_list") , aber Ihre Elemente in array enthält so etwas wie $("#listopen_1") obwohl ich bin mir nicht ganz sicher, weil ich nicht weiß, was die list variable gesetzt ist. Vielleicht versuchen Sie $("#" + elements[i]).sortable("refresh"); bevor Sie versuchen, Sie zu deaktivieren?
InformationsquelleAutor Jason | 2013-08-19
Schreibe einen Kommentar