Ich habe eine jQuery UI Sortierbare Liste Element, das dynamisch von einer Ajax-Anfrage gefüllt wird.jQuery UI Sortable - Fehler: Methoden können vor der Initialisierung nicht sortiert aufgerufen werden; versucht, die Methode 'disable' aufzurufen
Derzeit ist die Workflow
- Benutzer Schaltfläche klickt geht, Liste wird von bestimmten Einstellungen bevölkert und sortiert.
- Benutzer eine andere Taste klickt, werden
- Vorhandene Liste
<li>
Elemente vonjQuery.empty()
Anruf gelöscht - Neue Datenwerte werden in neue
<li>
Listenelemente eingefügt und - sortierbare Liste zu
<ul>
Liste angehängt wird über $ aktualisiert (“ #sortable "). sortierbar (" refresh ");
- Vorhandene Liste
Gegeben eine sortierbare Liste Objekt $("#avail_list").sortable(...);
, möchte ich die spezifischen Listenelemente haben draggable
Eigenschaft deaktiviert und Opazität auf 0,5 basierend auf vorhandenen Werte in anderen Elementen.
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);
}
}
Dies führt jedoch zu einem Fehler
Error: cannot call methods on sortable prior to initialization;
attempted to call method 'disable'
Da ich refresh
auf der sortierbare Liste aufgerufen, bevor die Elemente zu deaktivieren, wie Kann das Objekt sortable
nicht initialisiert werden?
Sie rufen sortierbar auf '$ („# avail_list“)', aber Ihre Array-Elemente wird so etwas wie '$ („# listopen_1“)' enthalten, obwohl ich genau bin nicht sicher, weil ich nicht weiß, Was ist die Variable 'list'? Vielleicht versuchen Sie '$ (#) + elements [i]) .sortierbar (" refresh ");' bevor Sie versuchen zu deaktivieren? – JLewkovich