javascript - jQuery 可排序拖放 - 选择多个项目并保留原件
问题描述
我正在尝试设置一个jQuery Sortable,它既a)允许选择多个项目,又b)一旦拖放 -将原始项目保留在其列表中。我已经关闭了多项选择部分,但我无法让这些项目保留在其原始框中。
我已经在 JSFiddle 上设置了一个示例:http: //jsfiddle.net/ncsujenn/hQnWG/2518/
在此示例中,您应该能够一次将多个披萨配料拖到披萨上。比萨饼 1、2 和 3 应该都可以放意大利辣香肠和香肠 - 但使用一次后,配料就会从列表中消失。因此,一旦 Pizza 1 有意大利辣香肠和香肠,Pizza 2 就别无选择,只能选择蔬菜。
HTML
<ul id="pizzas">
<li>Pizza 1</li>
<li>Pizza 2</li>
<li>Pizza 3</li>
</ul>
<ul id="toppings">
<li class="draggable">Pepperoni</li>
<li class="draggable">Sausage</li>
<li class="draggable">Mushrooms</li>
<li class="draggable">Olives</li>
<li class="draggable">Onion</li>
</ul>
jQuery
$("ul").on('click', 'li', function(e) {
if (e.ctrlKey || e.metaKey) {
$(this).toggleClass("selected");
} else {
$(this).addClass("selected").siblings().removeClass('selected');
}
});
$("#pizzas, #toppings").sortable({
connectWith: "#pizzas",
delay: 150,
revert: 0,
helper: function(e, item) {
//Manage selection class
if (!item.hasClass('selected')) {
item.addClass('selected').siblings().removeClass('selected');
}
var elements = item.parent().children('.selected').clone();
item.data('multidrag', elements).siblings('.selected').remove();
var helper = $('<li/>');
return helper.append(elements);
},
stop: function(e, ui) {
//Get stored multi selected items
var elements = ui.item.data('multidrag');
// Handle duplicates in receiving box
ui.item.after(elements).remove();
}
}).disableSelection();
CSS
ul {
border: 1px solid Black;
width: 300px;
height: 200px;
display: inline-block;
vertical-align: top
}
li {
background-color: Azure;
border-bottom: 1px dotted Gray
}
li.selected {
background-color: GoldenRod
}
#toppings {
cursor: pointer;
}
解决方案
这里有一个现有的问题和答案:https ://stackoverflow.com/a/7209451/203172
推荐阅读
- python - 在 python 中使用 pymongo 使用 db.collection.count() 函数时得到 DeprecationWarning?
- encoding - 如何为catboost编码列表列?
- mysql - 如何在一张表中生成两个序列休眠
- wordpress - 阻止 p 标签在 Wordpress 中自动添加 - Twig、ACF 和过滤简码
- google-apps-script - 尝试在我的 Apps 脚本中检索 Drive 文件夹时收到错误消息
- regex - Dart RegExp 空格无法识别
- tensorflow - keras + TF自定义损失函数中的元素乘法
- c - 在非结构或联合的情况下请求成员“sval”
- python - 尽管有一个有效值作为输入,程序仍拒绝运行“if”语句
- c++ - 如何通过将对象传递给另一个派生类来访问其派生类的基类的受保护数据成员