Jquery ui jQuery UI Sortable-错误:无法在初始化之前调用Sortable上的方法;试图调用方法';禁用';
我有一个jqueryui可排序列表元素,它是从Ajax请求动态填充的 目前,工作流程正在运行Jquery ui jQuery UI Sortable-错误:无法在初始化之前调用Sortable上的方法;试图调用方法';禁用';,jquery-ui,jquery-ui-sortable,Jquery Ui,Jquery Ui Sortable,我有一个jqueryui可排序列表元素,它是从Ajax请求动态填充的 目前,工作流程正在运行 用户单击按钮,列表将按指定设置填充和排序 用户点击另一个按钮, 现有列表元素被jQuery.empty()调用擦除 新的数据值插入到新的列表元素中,并附加到列表中 可排序列表通过$(#Sortable)刷新 给定一个可排序列表对象$(“#avail_list”)。可排序(…),我希望禁用特定列表元素的可拖动属性,并根据其他元素中的现有值将不透明度设置为0.5 为此,我有以下功能: var disabl
元素被jQuery.empty()
调用擦除
列表元素中,并附加到
列表中$(“#avail_list”)。可排序(…)代码>,我希望禁用特定列表元素的可拖动属性,并根据其他元素中的现有值将不透明度设置为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);
}
}
由于我在禁用元素之前在可排序列表上调用了refresh
,因此如何才能不初始化sortable
对象?在任何元素上调用.sortable()会使该元素的子元素可排序。这并不意味着子级也用.sortable()初始化。它们只是可排序容器的一部分,可以四处拖动
由于您正在对子元素调用.sortable('disable'),它将给出一个错误,因为对父元素而不是子元素调用了.sortable()。你禁用的方式也是不正确的
使用将这些元素从排序中排除。在初始化排序表的任何位置添加此选项
$("#avail_list").sortable({
cancel: ".disable-sort"
});
并将该类添加到要禁用的元素中
function disableDraggable(elements){
for (var i = 0; i < elements.length; i++) {
$("#" + elements[i]).addClass("disable-sort");
$("#" + elements[i]).fadeTo("fast", 0.5);
}
}
功能不可禁用拖动(元素){
对于(var i=0;i
您在$(“#avail_list”)
上调用sortable,但是您的元素数组将包含类似$(“#list open_1”)
的内容,尽管我不确定,因为我不知道list
变量设置为什么。也许可以尝试添加$(“#”+元素[i])。可排序(“刷新”)代码>在尝试禁用之前?
function disableDraggable(elements){
for (var i = 0; i < elements.length; i++) {
$("#" + elements[i]).addClass("disable-sort");
$("#" + elements[i]).fadeTo("fast", 0.5);
}
}