jQuery UI Sortable - Erreur: impossible d'appeler des méthodes sur sortable, avant de l'initialisation; tenté d'appeler la méthode "désactiver"
J'ai un jQuery UI Sortable élément de la liste qui est rempli dynamiquement à partir d'une requête Ajax.
Actuellement, le flux de travail va
- Utilisateur clique sur le bouton, la liste est remplie et triée selon les paramètres spécifiés.
- Utilisateur clique sur un autre bouton,
- Liste existante
<li>
éléments sont effacés parjQuery.empty()
appel - Les nouvelles valeurs des données sont insérés dans de nouveaux
<li>
éléments de la liste et annexé à la<ul>
liste - Liste triable est actualisé par $("#sortable").sortable("refresh");
- Liste existante
Donné une liste Triable objet $("#avail_list").sortable( ... );
, je veux avoir la liste précise des éléments draggable
bien désactivé et une opacité de 0.5 basée sur les valeurs existant dans d'autres éléments.
Pour ce faire, j'ai la fonction suivante:
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);
}
}
Toutefois, cela entraîne une erreur
Error: cannot call methods on sortable prior to initialization;
attempted to call method 'disable'
Depuis j'ai appelé refresh
sur la liste triable avant de désactiver les éléments, comment peut - sortable
objet de ne pas être initialisé?
Vous appelez sortable sur
$("#avail_list")
, mais vos éléments de tableau contiendra quelque chose comme $("#listopen_1")
bien que je ne suis pas sûr exactement parce que je ne sais pas ce que le list
variable est définie. Peut-être essayer d'ajouter $("#" + elements[i]).sortable("refresh");
avant de vous essayez de le désactiver?OriginalL'auteur Jason | 2013-08-19
Vous devez vous connecter pour publier un commentaire.
L'appel d'une .sortable() sur n'importe quel élément rend les enfants que les éléments sortable. Cela ne signifie pas que les enfants sont initialisés avec la .sortable(). Ils sont juste une partie d'un sortable conteneur qui peut être déplacé autour de.
Et puisque vous appelez .sortable ("disable") sur les éléments d'enfant, il va donner une erreur depuis le .sortable() a été appelée sur les parents et non les enfants. Et la façon dont vous êtes la désactivation est également incorrect.
Faire usage de la propriété annuler d'exclure ces éléments triés. Ajouter cette option, où que vous soyez initialisation de votre sortable.
Et d'ajouter que la classe de ces éléments que vous souhaitez désactiver.
OriginalL'auteur Mandeep Jain