jQuery ui 可排序:项目选项哈希选择在 DOM 元素更改后没有选择性
jQuery ui sortable: items option hash selection not being selective after changes in DOM element
我只想让没有 class "ui-state-disabled" 的 "li" 可以在您可以在 jsfiddle 上找到的代码中进行排序。
$("#sortable-1, #sortable-2").sortable({
items: "li:not(.ui-state-disabled)",
connectWith: ".connect"
});
我还在 "ul" 中添加了事件侦听器,因此当用户双击任何 "li" 时,用户可以 disable/enable 可排序功能。我可以通过单击使已禁用的 "li" 再次可排序,但我无法通过将 class "ui-state-disabled" 添加回 "li".[=5 来重新禁用它=]
我还注意到 jQuery UI 库自动将 class "ui-sortable-handle" 添加到 "li" 可排序的,但重新启用(通过双clicking) "li"s 在没有 class "ui-sortable-handle".
的情况下仍然可以排序
缺少直接子选择器。
Codepen
详情
您只需要为列表本身添加一个 tabindex 属性。
html
<div>
<ul id="sortable-1" class="connect">
<li tabindex="0">Enabled</li>
<li tabindex="0" >Enabled</li>
<li tabindex="0">Enabled</li>
</ul>
</div>
<div>
<ul id="sortable-2" class="connect">
<li tabindex="0">Enabled</li>
<li class="ui-state-disabled" tabindex="0">Disabled</li>
<li class="ui-state-disabled" tabindex="0">Disabled</li>
</ul>
</div>
编辑
DEMO 2
这很简单,可以做你想做的一切。
$(function () {
$("#sortable-1, #sortable-2").sortable({
items: "li:not(.ui-state-disabled)",
cancel: ".ui-state-disabled",
connectWith: ".connect"
});
$("ul").on("dblclick", "li", function (event) {
var $el = $(this);
if ($el.text() == "Enabled") {
$el.text("Disabled");
} else {
$el.text("Enabled");
}
$el.toggleClass("ui-state-disabled");
})
})
DEMO
$("#sortable-1, #sortable-2").sortable({
items: "> li:not(.ui-state-disabled)",
connectWith: ".connect"
});
我只想让没有 class "ui-state-disabled" 的 "li" 可以在您可以在 jsfiddle 上找到的代码中进行排序。
$("#sortable-1, #sortable-2").sortable({
items: "li:not(.ui-state-disabled)",
connectWith: ".connect"
});
我还在 "ul" 中添加了事件侦听器,因此当用户双击任何 "li" 时,用户可以 disable/enable 可排序功能。我可以通过单击使已禁用的 "li" 再次可排序,但我无法通过将 class "ui-state-disabled" 添加回 "li".[=5 来重新禁用它=]
我还注意到 jQuery UI 库自动将 class "ui-sortable-handle" 添加到 "li" 可排序的,但重新启用(通过双clicking) "li"s 在没有 class "ui-sortable-handle".
的情况下仍然可以排序缺少直接子选择器。
Codepen
详情
您只需要为列表本身添加一个 tabindex 属性。
html
<div>
<ul id="sortable-1" class="connect">
<li tabindex="0">Enabled</li>
<li tabindex="0" >Enabled</li>
<li tabindex="0">Enabled</li>
</ul>
</div>
<div>
<ul id="sortable-2" class="connect">
<li tabindex="0">Enabled</li>
<li class="ui-state-disabled" tabindex="0">Disabled</li>
<li class="ui-state-disabled" tabindex="0">Disabled</li>
</ul>
</div>
编辑
DEMO 2
这很简单,可以做你想做的一切。
$(function () {
$("#sortable-1, #sortable-2").sortable({
items: "li:not(.ui-state-disabled)",
cancel: ".ui-state-disabled",
connectWith: ".connect"
});
$("ul").on("dblclick", "li", function (event) {
var $el = $(this);
if ($el.text() == "Enabled") {
$el.text("Disabled");
} else {
$el.text("Enabled");
}
$el.toggleClass("ui-state-disabled");
})
})
DEMO
$("#sortable-1, #sortable-2").sortable({
items: "> li:not(.ui-state-disabled)",
connectWith: ".connect"
});