限制容器内可拖放项目的数量
Limit number of droppable dragged items inside a container
我找到了这段代码,并链接了它。
这是接近我正在寻找的,但是我想添加一个计数器,因为我希望列表2和列表3只接受3个可拖动的项目。
为了我的目的,我打算在这段代码中添加更多的列表,它们也只需要接受3个项目。
List 1需要能够接受所有可拖动项。
我想我需要创建一个带有计数器的数组来跟踪所有这些,但我不知道怎么做。我真的不懂或不知道javascript。
如果有任何帮助,我将不胜感激。
$(document).ready(function(){
$(".droppable").droppable({
drop: function(event, ui) {
var $list = $(this);
$helper = ui.helper;
$($helper).removeClass("selected");
var $selected = $(".selected");
if($selected.length > 1){
moveSelected($list,$selected);
}else{
moveItem(ui.draggable,$list);
}
}, tolerance: "touch"
});
$(".draggable").draggable({
revert: "invalid",
helper: "clone",
cursor: "move",
drag: function(event,ui){
var $helper = ui.helper;
$($helper).removeClass("selected");
var $selected = $(".selected");
if($selected.length > 1){
$($helper).html($selected.length + " items");
}
}
});
function moveSelected($list,$selected){
$($selected).each(function(){
$(this).fadeOut(function(){
$(this).appendTo($list).removeClass("selected").fadeIn();
});
});
}
function moveItem( $item,$list ) {
$item.fadeOut(function() {
$item.find(".item").remove();
$item.appendTo( $list ).fadeIn();
});
}
$(".item").click(function(){
$(this).toggleClass("selected");
});
});
HTML…
<div id="list1" class="droppable list"><!-- I want this to accept many. -->
<div class="item draggable">1</div>
<div class="item draggable">2</div>
<div class="item draggable">3</div>
<div class="item draggable">4</div>
</div>
<div id="list2" class="droppable list"><!-- I want this to accept only 3. -->
<div class="item draggable">5</div>
<div class="item draggable">6</div>
</div>
<div id="list3" class="droppable list"><!-- I want this to accept only 3. -->
<div class="item draggable">7</div>
</div>
为每个可拉列表添加了data-max
属性,在drop
函数中,您可以检查该列表中的元素数量是否达到max
(限制),如果是,则返回false。
下面是对代码的修改:
$(document).ready(function(){
$(".droppable").droppable({
drop: function(event, ui) {
var $list = $(this);
$helper = ui.helper;
// Check if we reached the maximum number of children.
if ($(this).children().length == $(this).data('max')) {
return false;
}
$($helper).removeClass("selected");
var $selected = $(".selected");
if($selected.length > 1){
moveSelected($list,$selected);
}else{
moveItem(ui.draggable,$list);
}
}, tolerance: "touch"
});
$(".draggable").draggable({
revert: "invalid",
helper: "clone",
cursor: "move",
drag: function(event,ui){
var $helper = ui.helper;
$($helper).removeClass("selected");
var $selected = $(".selected");
if($selected.length > 1){
$($helper).html($selected.length + " items");
}
}
});
function moveSelected($list,$selected){
$($selected).each(function(){
$(this).fadeOut(function(){
$(this).appendTo($list).removeClass("selected").fadeIn();
});
});
}
function moveItem( $item,$list ) {
$item.fadeOut(function() {
$item.find(".item").remove();
$item.appendTo( $list ).fadeIn();
});
}
$(".item").click(function(){
$(this).toggleClass("selected");
});
});
div.list {
border: 1px solid red;
margin: 5px;
min-height: 20px;
}
div.list div {
background: gray;
margin: 4px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div id="list1" class="droppable list" data-max="-1"><!-- I want this to accept many. -->
<div class="item draggable">1</div>
<div class="item draggable">2</div>
<div class="item draggable">3</div>
<div class="item draggable">4</div>
</div>
<div id="list2" class="droppable list" data-max="3"><!-- I want this to accept only 3. -->
<div class="item draggable">5</div>
<div class="item draggable">6</div>
</div>
<div id="list3" class="droppable list" data-max="3"><!-- I want this to accept only 3. -->
<div class="item draggable">7</div>
</div>
相关文章:
- html5拖放确定拖动项目的来源
- 如何允许我的访问者通过拖放来排列列表项目
- 有角度的拖放可在单独的容器中列出项目
- 如何使 ExtJS 拖放树仅复制 - 而不是从显示中删除项目
- 容器中的多个项目(拖放)
- Extjs使用复选框模型在网格上拖放单个项目
- jQuery拖放绑定多个项目
- 当在可排序网格中垂直拖放项目时,垂直对齐将中断
- 限制容器内可拖放项目的数量
- Jquery UI拖拽和排序- 2次出现被拖放的项目
- 使用Dragula拖放保存拖动项目的位置,React版本(React - Dragula)
- JQuery UI拖放显示警报时,项目到达目的地
- 如何在拖放时获得可拖动项目的相对位置
- 从父框架中拖动一个项目,并将其放入子框架中的可拖放对象中
- 防止电子应用程序重定向时,拖放项目在窗口
- 如何获得一个可拖放项目的id,当我点击可拖放项目
- 拖放多个项目html5
- 如何使用jQuery或JavaScript拖放多个项目
- Dojo拖放:如何检索项目的顺序
- HTML表格与rowspan重新排序项目拖放问题