📜  jQuery UI 可排序取消选项(1)

📅  最后修改于: 2023-12-03 14:43:12.801000             🧑  作者: Mango

jQuery UI 可排序取消选项

jQuery UI 提供了一个可排序的功能,可以使用户可以从一个列表中选择一个或多个项目,并将它们放入另一个列表中。在这个功能中,我们也可以实现取消选项的功能。

实现方法

要实现可排序取消选项,我们需要使用 jQuery UI Sortable 插件,并将其配置为多选模式。我们还需要添加一个“取消”按钮,以便用户可以取消他们选择的项目。

以下是一个实现可排序取消选项的示例代码:

<!DOCTYPE html>
<html>
<head>
	<title>Sortable Cancel Option</title>
	<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="//code.jquery.com/jquery-1.12.4.js"></script>
    <script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <style>
        #sortable1, #sortable2 {
            border: 1px solid #ccc;
            padding: 10px;
            width: 200px;
            height: 200px;
            float: left;
            margin-right: 10px;
        }
        #sortable1 li, #sortable2 li {
            background-color: #eee;
            border: 1px solid #ccc;
            margin: 5px;
            padding: 5px;
            list-style: none;
        }
        #sortable1 li.ui-state-highlight, #sortable2 li.ui-state-highlight {
            background-color: #f4f4f4;
            border: 1px solid #aaa;
            color: #000;
        }
        #sortable2 li.ui-state-cancel {
            background-color: #ffffcc;
            border: 1px solid #aaa;
            color: #000;
        }
    </style>
    <script>
        $(function() {
            $("#sortable1, #sortable2").sortable({
                connectWith: ".connectedSortable",
                cancel: ".cancel"
            }).disableSelection();
            $("#btnCancel").click(function() {
                $("#sortable2 .ui-state-highlight").addClass("ui-state-cancel").removeClass("ui-state-highlight");
            });
        });
    </script>
</head>
<body>
    <ul id="sortable1" class="connectedSortable">
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
    </ul>
 
    <ul id="sortable2" class="connectedSortable">
        <li class="cancel">Cancel</li>
    </ul>
 
    <button id="btnCancel">Cancel Selection</button>
</body>
</html>
解释代码

上述代码通过使用 jQuery UI Sortable 插件,创建了两个可排序的列表。列表之间可以通过参数 connectWith 相互连接。

另外,在 sortable1 列表中添加了三个项目,而在 sortable2 列表中,添加了一个取消选项的项目。这个取消项目的 class 被设置为 cancel,以便我们在配置排序时可以将其排除在外。

此外,我们添加了一个“取消选择”按钮,单击它将把当前列表中所有被高亮的项目变成取消项目。

在脚本中,我们使用以下代码将两个列表配置为可排序的:

$("#sortable1, #sortable2").sortable({
    connectWith: ".connectedSortable",
    cancel: ".cancel"
}).disableSelection();

这意味着 sortable1sortable2 列表均可排序,它们通过参数 connectWith 相互连接,并且在排序时将排除 .cancel 元素。

最后,我们使用以下代码将高亮项目变成取消项目:

$("#btnCancel").click(function() {
    $("#sortable2 .ui-state-highlight").addClass("ui-state-cancel").removeClass("ui-state-highlight");
});

这将在单击“取消选择”按钮时运行,在 sortable2 列表中找到所有被高亮的元素,并将它们的 class 设置为 ui-state-cancel

结论

通过上述方法,我们可以在 jQuery UI Sortable 插件中实现可排序取消选项的功能。这使得用户可以轻松地选择和取消项目,而不必担心不必要的麻烦。