gpt4 book ai didi

jquery - 动态启用/禁用 jquery 可排序项目

转载 作者:行者123 更新时间:2023-12-03 22:07:40 26 4
gpt4 key购买 nike

我的表格行可以根据是否选中某些单选按钮进行排序。可排序在 document.ready 上初始化,如下所示:

$(document).ready(function() {
// Return a helper with preserved width of cells
// handy code I got from http://lanitdev.wordpress.com/2009/07/23/make-table-rows-sortable-using-jquery-ui-sortable/
var fixHelper = function(e, ui) {
ui.children().each(function() {
$(this).width($(this).width());
});
return ui;
};
// #opts = table id; tr.ui-state-disabled class = rows not sortable
$("#opts tbody").sortable({
items: 'tr:not(.ui-state-disabled)',
cursor: 'crosshair',
helper: fixHelper
}).disableSelection();
});

我将以下函数附加到单选按钮(ID 前缀为“active_”)onchange,它可以从表中添加或删除 ui-state-disabled 类属性行(动态 ID 前缀为“opt_”):

    var toggleDrag = function(i){
if ($('#active_'+i+'-0').is(':checked')) {
$('#opt_'+i).addClass('ui-state-disabled');
}
if ($('#active_'+i+'-1').is(':checked')) {
$('#opt_'+i).removeClass();
}
$("#opts tbody").sortable("option", "items", "tr:not(.ui-state-disabled)");
//$("#opts tbody").sortable("refresh");
//alert($('#opt_'+i).attr('class')); - alert indicates that the class attribute is being changed
//$("#opts tbody").sortable("option", "cursor", "auto"); - this works!
}

如果我选择一个单选按钮来使先前不可排序的行变得可排序,它就会起作用,并且我可以拖放该行。问题是,如果我选择一个单选按钮来创建以前可排序、不可排序的行,我仍然可以拖放它。如果先前可排序, setter .sortable("option", "items", "tr:​​not..etc") 不会出现“取消注册”行。我也尝试过 .sortable("refresh") 但没有运气。我已经检查过类属性是否正在通过警报进行更改,确实如此。

任何有关此问题的帮助将不胜感激。

最佳答案

我遇到了同样的问题,items 选项似乎没有删除之前启用的项目。

但是,取消选项可以。请注意,禁用的项目将四处移动,为可排序的项目腾出空间(该位置仍可用作放置目标),但拖动禁用的项目本身将不起作用。使用 disabled 类还可以根据项目是否可排序轻松更改样式(请参阅 jsfiddle )。

这里的代码部分基于 Bah Bah the Lamb 的答案,但已被大大整理和简化。

HTML:

<ul id="sorted-list">
<li>
<p><input type="checkbox" checked="true" /> Item 1</p>
</li>
<li>
<p class="disabled"><input type="checkbox" /> Item 2</p>
</li>
<li>
<p><input type="checkbox" checked="true" /> Item 3</p>
</li>
</ul>

jQuery:

$("#sorted-list").sortable({
cancel:".disabled"
});

// add or remove the 'disabled' class based on the value of the checkbox
$("#sorted-list input").click(function() {
if (this.checked) {
$(this.parentElement).removeClass("disabled");
} else {
$(this.parentElement).addClass("disabled");
}
});

CSS:

li {
border: 1px solid #aaa;
background-color: #eee;
color:#555;
padding: 5px;
}

.disabled {
color:#ddd;
}

关于jquery - 动态启用/禁用 jquery 可排序项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4360904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com