我正在创建一个动态表单,其中有一个 ul
和一个空的 div
。用户必须从 ul
中拖出一个 li
并将其放入那个空的 div 中。现在我已经做了,空的 div 被分成两半。用户可以放入两者。拖放的 div
是可排序的。也可以在这些 div 之间进行排序。这是我尝试过的方式:
$('document').ready(function () {
$(document).on('mousedown mouseup', '.grabbing, .grab', function(event) {
$(this).toggleClass('grabbing').toggleClass('grab');
});
$('.side_bar_element').draggable({
connectToSortable: ".wrapper",
helper: "clone",
opacity: 0.55,
zIndex: 100,
stop: function(event, ui) {
cursor: "grabbing"
}
});
$(".wrapper").sortable({
connectWith: ".connectedSortable",
start: function(event, ui) {
ui.item.startPos = ui.item.index();
},
stop: function(event, ui) {
cursor: "grabbing"
console.log("Start position: " + ui.item.startPos);
console.log("New position: " + ui.item.index());
}
}).disableSelection();
});
ul.side_bar li{
list-style: none;
display: block;
margin-top: 10px;
font-size: 1.2em;
display: block;
padding: 5px;
text-align: center;
background-color: #53D4F3;
}
#right-box .preview, #left-box .content {
display: none;
}
#right-box .content, #left-box .preview {
display: block;
}
.wrapper{
min-height: 400px;
background-color: rgba(154, 210, 148, 1);
padding-top: 10px;
padding-bottom: 10px;
padding-right: 10px;
padding-left: 10px;
column-count: 3;
}
.grab {
cursor: hand;
cursor: grab;
cursor: -moz-grab;
cursor: -webkit-grab;
}
.grabbing {
cursor: grabbing;
cursor: -moz-grabbing;
cursor: -webkit-grabbing;
}
.content{
border: 1px dashed #CCC;
padding-top: 10px;
padding-bottom: 10px;
padding-right: 10px;
padding-left: 10px;
}
#left{
border: 1px solid #111;
height: 300px;
}
#right{
border: 1px solid #111;
height: 300px;
}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</script>
<ul class="side_bar">
<li id="left-box" class="side_bar_element grab">
<div class="preview">Item 1 (drag me)</div>
<div class="content"><input type="text" class="form-control" style="height: 20px;"></div>
</li>
<li id="left-box" class="side_bar_element grab">
<div class="preview">Item 2 (drag me)</div>
<div class="content"><input type="text" class="form-control" style="height: 20px;"></div>
</li>
<li id="left-box" class="side_bar_element grab">
<div class="preview">Item 3 (drag me)</div>
<div class="content"><input type="text" class="form-control" style="height: 20px;"></div>
</li>
</ul>
<br>Please drag the elements to this box<br>
<!-- the right box wrapper for dropped elements-->
<div id="right-box wrapper">
<div id="left" class="wrapper connectedSortable" style="float:left; width: 50%">
</div>
<div id="right" class="wrapper connectedSortable" style="float:right; width: 50%">
</div>
</div>
现在,每个 div 都有一个动态创建的 div
。左侧 div 中删除的 div 的索引为 0、1、2,左侧 div 中删除的 div 的索引为 0 和 1。对我来说,我想要的是,两侧删除的 div 的索引应该连续,例如, 0, 1, 2, 3.. Z
类型。喜欢,
This is how it is now:
___________________________________
(main div)
| div1(index-0) | div2(index-0) |
| div1(index-1) | div2(index-1) |
| div1(index-2) | div2(index-2) |
| div1(index-2) | div2(index-3) |
___________________________________
This is how I want.
___________________________________
(main div)
| div1(index-0) | div2(index-1) |
| div1(index-2) | div2(index-3) |
| div1(index-4) | div2(index-5) |
| div1(index-6) | div2(index-7) |
___________________________________
我该怎么做?有办法吗?
最佳答案
请为您的代码包含最新的 Jquery 和 Jquery Ui..
使用这两个链接代替之前的库。
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
在 snippest 中查看您的问题的解决方案。
$('document').ready(function () {
$(document).on('mousedown mouseup', '.grabbing, .grab', function(event) {
$(this).toggleClass('grabbing').toggleClass('grab');
});
$('.side_bar_element').draggable({
connectToSortable: ".wrapper",
helper: "clone",
opacity: 0.55,
zIndex: 100,
stop: function(event, ui) {
cursor: "grabbing"
}
});
$(".wrapper").sortable({
connectWith: ".connectedSortable",
start: function(event, ui) {
ui.item.startPos = ui.item.index();
},
stop: function(event, ui) {
cursor: "grabbing"
console.log("Start position: " + ui.item.startPos);
console.log("New position: " + ui.item.index());
}
}).disableSelection();
});
ul.side_bar li{
list-style: none;
display: block;
margin-top: 10px;
font-size: 1.2em;
display: block;
padding: 5px;
text-align: center;
background-color: #53D4F3;
}
#right-box .preview, #left-box .content {
display: none;
}
#right-box .content, #left-box .preview {
display: block;
}
.wrapper{
min-height: 400px;
background-color: rgba(154, 210, 148, 1);
padding-top: 10px;
padding-bottom: 10px;
padding-right: 10px;
padding-left: 10px;
column-count: 3;
}
.grab {
cursor: hand;
cursor: grab;
cursor: -moz-grab;
cursor: -webkit-grab;
}
.grabbing {
cursor: grabbing;
cursor: -moz-grabbing;
cursor: -webkit-grabbing;
}
.content{
border: 1px dashed #CCC;
padding-top: 10px;
padding-bottom: 10px;
padding-right: 10px;
padding-left: 10px;
}
#left{
border: 1px solid #111;
height: 300px;
}
#right{
border: 1px solid #111;
height: 300px;
}
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<ul class="side_bar">
<li id="left-box" class="side_bar_element grab">
<div class="preview">Item 1 (drag me)</div>
<div class="content"><input type="text" class="form-control" style="height: 20px;"></div>
</li>
<li id="left-box" class="side_bar_element grab">
<div class="preview">Item 2 (drag me)</div>
<div class="content"><input type="text" class="form-control" style="height: 20px;"></div>
</li>
<li id="left-box" class="side_bar_element grab">
<div class="preview">Item 3 (drag me)</div>
<div class="content"><input type="text" class="form-control" style="height: 20px;"></div>
</li>
</ul>
<br>Please drag the elements to this box<br>
<!-- the right box wrapper for dropped elements-->
<div id="right-box wrapper">
<div id="left" class="wrapper connectedSortable" style="float:left; width: 50%">
</div>
<div id="right" class="wrapper connectedSortable" style="float:right; width: 50%">
</div>
</div>
注意:请先包含 Jquery,然后包含 Jquery Ui。
关于jquery - 将一个 `div` 无边框的分成两半,并以 `Z` 的方式为掉落的 div 提供索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40779399/