jQuery UI 可放置 - 如何每个放置区只允许 1 个元素,而不是堆叠
jQuery UI Droppable - How to allow only 1 element per drop zone, instead of stacking
我当前的脚本:https://jsfiddle.net/uoyp37bj/11/
问题是,目前可以通过将它们相互堆叠来"堆叠"可放置元素。我正在尝试这样做,以便只有最新放置的元素保留在那里,并且删除任何以前的元素。
我最初只是使用 CSS "隐藏"其他项目,但由于我使用输入框来跟踪拖放区域中存在哪些项目,这不再可能。任何帮助将不胜感激,希望它在jQuery UI API中相对简单,但目前没有任何工作对我有用。
$(".social-msl-link-label").draggable({
connectToSortable: ".social-msl-group-list",
revert: "invalid",
helper: "clone"
});
var orderMSLids = [];
var droppableOptions = {
accept: ".social-msl-link-label",
tolerance: 'pointer',
greedy: true,
hoverClass: 'highlight',
drop: function(ev, ui) {
orderMSLids = [];
$(ui.draggable).clone(true).detach().css({
position: 'relative',
top: 'auto',
left: 'auto'
}).appendTo(this);
orderMSLids.push($(this).find('.social-msl-link-label').attr('id'));
$(this).siblings().filter(function() {
return $(this).text().trim() === $(ui.draggable).text().trim();
}).empty();
str = [];
$(".social-msl-links-order li").each(function(index) {
var res = $(this).children().attr('id');
if (res) {
str.push(res);
}
});
var string = str.join(",");
$('#msl-order').val(string);
}
};
$(".social-msl-links-order li.social-msl-drop").droppable(droppableOptions);
$('.social-msl-add').click(function() {
var $droppable = $('<li class="social-msl-drop"></li>').droppable(droppableOptions);
$droppable.insertBefore('.social-msl-add');
});
$('#msl-order').prop('value').split(',').forEach(function(id) {
var $droppable = $('.social-msl-drop.ui-droppable:empty').first();
if (id) {
$('.draggable #' + id).clone(true).appendTo($droppable);
}
});
只是有一个想法,但没有进展 - 也许可以迭代"drop"调用中的所有元素,并删除任何重复项。在此循环中,还可以检查是否有任何拖放区有 2 个元素并删除除 1 个元素之外的所有元素。不知道如何编写脚本,但最初的逻辑对我来说是有意义的。
不要将可拖动内容附加到可拖放,只需将其整个内容替换为可拖动内容,如下所示:
$(this).html(ui.draggable.clone(true).css({
position: 'relative',
top: 'auto',
left: 'auto'
}));
而不是:
$(ui.draggable).clone(true).detach().css({
position: 'relative',
top: 'auto',
left: 'auto'
}).appendTo(this);
相关文章:
- 剑道UI下载列表:如何动态添加新元素
- jQuery UI-当可丢弃时,必须删除拖动的元素
- 将jquery ui窗口的父元素设置为另一个元素
- 使用AngularJS UI路由器时出现元素绑定问题
- 如何使用jQuery在模板kendo UI中获取元素类
- 如何将剑道UI窗口与页面上的另一个元素对齐
- TR 元素上的 UI-sref 不会在新选项卡中打开
- 如何附加jquery-ui-autocomplete元素
- d3.js svg元素上的角度UI工具提示
- jQuery UI-动态设置可调整大小元素的minHeight
- 无法让悬停事件使用 jQuery UI 持续时间参数或 CSS 处理目标元素的同级元素
- 获取JQuery UI自动完成元素的索引
- 如何使用 CSS 伪元素作为 jquery UI 句柄
- jQuery UI 工具提示在源 DOM 元素移动时卡住打开
- 带有 d3 的嵌入式 Google 地图.js叠加层显示 UI 选项和叠加元素,但不是地图本身
- Greasemonkey Jquery UI 元素的图标 Spinner 和 Selectmenu 不显示
- 如何将键控事件与 JQuery-ui 可拖动元素一起使用
- 如何显示uI-select(angularjs)时,单击html元素
- 获取 ViewModel 绑定到 HTML 元素 Kendo UI MVVM
- jQuery UI 可拖动元素位于其他可拖动元素下