Ajax リクエストから動的に入力される jQuery UI Sortable リスト要素があります。
現在、ワークフローは
- ユーザーがボタンをクリックすると、リストが入力され、指定された設定で並べ替えられます。
- ユーザーが別のボタンをクリックし、
- 既存のリスト
<li>
要素はjQuery.empty()
呼び出しによって消去されます <li>
新しいデータ値が新しいリスト要素に挿入され、<ul>
リストに追加されます- ソート可能なリストは $("#sortable").sortable("refresh"); によって更新されます。
- 既存のリスト
Sortable list object が与えられた場合$("#avail_list").sortable( ... );
、特定のリスト要素のdraggable
プロパティを無効にし、他の要素の既存の値に基づいて不透明度を 0.5 に設定したいと考えています。
これを行うには、次の機能があります。
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);
}
}
ただし、これはエラーになります
Error: cannot call methods on sortable prior to initialization;
attempted to call method 'disable'
refresh
要素を無効にする前にソート可能なリストを呼び出したので、sortable
オブジェクトを初期化できないのはなぜですか?