Javascript 基于条件的jQuery可拖动还原
我有一个与jQuery相关的问题,可以拖动和拖放。这是我想做的事情 首先:我有两个div。一个是Javascript 基于条件的jQuery可拖动还原,javascript,jquery,jquery-ui,jquery-plugins,Javascript,Jquery,Jquery Ui,Jquery Plugins,我有一个与jQuery相关的问题,可以拖动和拖放。这是我想做的事情 首先:我有两个div。一个是,另一个是。“容器”有10个,可拖放到“选定”中。以下是代码: <div id="selected"> <ul class="sortable-list"> </ul> </div> <div id="container"> <ul class="sortable-list">
,另一个是
。“容器”有10个
,可拖放到“选定”中。以下是代码:
<div id="selected">
<ul class="sortable-list">
</ul>
</div>
<div id="container">
<ul class="sortable-list">
<li>1</li>
<li>2</li>
<li>....</li>
<li>9</li>
<li>10</li>
</ul>
</div>
这很好用
Third:但是当我将从“selected”拖动到“container”时,“selected”div将只有4个
s。所以在这种情况下,稍后用户应该能够从“container”div向“selected”div添加另一个
。但不幸的是,它不起作用。由于if(total>=5)
条件,我尝试拖放到“selected”中的所有
都被还原
有人能帮我解决这个问题吗?请……首先,将还原设置为false将完全禁用还原功能。正如你所指出的,你可以把拖拽物扔到任何地方。您通常需要的是revert:'invalid'
,这意味着它将在任何不接受它的可拖放对象上被拖放时进行还原
你想做的应该是这样的:
$('#selected').droppable({
drop: function() {
// since you're doing a full re-calc every time, this doesn't need to be global
var total = $("#selected li").length;
if(total >= 5) {
// once you've reached five, simply don't accept any more elements
// the rest will revert if dropped here
$('#selected').droppable('disable');
}
}
});
$("#selected ul").droppable({
accept: function() {
return $("#selected li").length < 5;
}
});
您可以使用,它需要一个函数来更轻松地执行此操作,如下所示:
$('#selected').droppable({
drop: function() {
// since you're doing a full re-calc every time, this doesn't need to be global
var total = $("#selected li").length;
if(total >= 5) {
// once you've reached five, simply don't accept any more elements
// the rest will revert if dropped here
$('#selected').droppable('disable');
}
}
});
$("#selected ul").droppable({
accept: function() {
return $("#selected li").length < 5;
}
});
$(“#选定ul”)。可拖放({
接受:函数(){
返回$(“#所选li”)。长度<5;
}
});
。当你拖出元素时,.length
会下降,它会再次接受元素……没有理由变得更复杂:)@Nick Craver:是的,它正在工作。这里的新问题是,我可以看到我正在将LI元素从“container”拖到“selected”。但在将LI从选定对象拖动到容器时,似乎并没有拖动元素。但最后,我可以看到LI从selected移动到container。有什么解决方案可以在从选定项拖动到容器时看到拖动效果吗?@lakum4stackof-你应该已经得到了效果,你还在添加/删除可拖动的任何位置吗?@Nick Craver-我没有看到从选定项拖动回容器div时的拖动效果。但最后,因此,我将LI从selected div移动到container div,并且每次LI都被添加到LI列表的末尾。@lakum4stackof-ooh,我明白你的意思,给你:@Nick Craver-嘿,亲爱的,每当我将LI从container拖放到selected或selected到container时,它总是将LI拖放到整个LI列表的末尾。我不能把它放在两个元素之间。有什么解决办法吗?