7
我有一個jQuery UI排序列表元素,從Ajax請求動態填充。jQuery UI可排序 - 錯誤:無法在初始化之前調用可排序的方法;試圖調用方法'禁用'
目前,工作流去
- 用戶點擊按鈕,列表中填充,並通過指定的設置進行排序。
- 用戶點擊另一按鈕,
- 現有列表
<li>
元件由jQuery.empty()
呼叫擦除 - 新的數據值插入到新
<li>
列表元素和附加到<ul>
列表 - 排序列表經由$(刷新」 #sortable 「)排序(」 刷新「);
- 現有列表
給定一個排序列表對象$("#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
對象可以不被初始化嗎?
你打電話'$(「#avail_list」)'排序,但你的元素數組將包含類似'$(「#listopen_1」)'雖然我不知道究竟是因爲我不知道'list'變量被設置爲什麼。也許嘗試添加'$(「#」+ elements [i])。sortable(「refresh」);'嘗試禁用之前? – JLewkovich