【发布时间】:2016-09-24 15:46:34
【问题描述】:
我使用 jquery ui 开发了嵌套拖放,但它不允许我拖放到 .drop-container div 之外。这是要审查的 jsfiddle:
一旦我将项目拖放到#list2 div 中,它就不起作用了。我该如何解决?
代码如下:
JS:
$(function() {
$("#list2 .drop-container").sortable({
connectWith: "#list1",
over: function() {
removeIntent = false;
},
out: function() {
removeIntent = true;
},
beforeStop: function(event, ui) {
itemContext = ui.item.context;
if (removeIntent == true) {
ui.item.remove();
disp($("#list2").sortable('toArray'));
}
//console.log(itemContext);
},
receive: function(event, ui) {
console.log(ui);
console.log(event);
var this_id = $(ui.item).attr("id");
var preview = $(itemContext).html().replace(/<!--/g, '').replace(/-->/g, '');
$(itemContext).attr("id", this_id);
$(itemContext).css("width", $('#list2').width() - 20).addClass("ui-state-default").height('auto');
$(itemContext).html(preview);
//console.log(this_id);
//console.log(preview);
}
});
$("#list2").sortable({
connectWith: "#list1",
over: function() {
removeIntent = false;
},
out: function() {
removeIntent = true;
},
beforeStop: function(event, ui) {
itemContext = ui.item.context;
if (removeIntent == true) {
ui.item.remove();
disp($("#list2").sortable('toArray'));
}
//console.log(itemContext);
},
receive: function(event, ui) {
console.log(ui);
console.log(event);
var this_id = $(ui.item).attr("id");
var preview = $(itemContext).html().replace(/<!--/g, '').replace(/-->/g, '');
$(itemContext).attr("id", this_id);
$(itemContext).css("width", $('#list2').width() - 20).addClass("ui-state-default").height('auto');
$(itemContext).html(preview);
$("#list2 .drop-container").sortable({
connectWith: "#list1",
over: function() {
removeIntent = false;
},
out: function() {
removeIntent = true;
},
beforeStop: function(event, ui) {
itemContext = ui.item.context;
if (removeIntent == true) {
ui.item.remove();
disp($("#list2").sortable('toArray'));
}
//console.log(itemContext);
},
receive: function(event, ui) {
console.log(ui);
console.log(event);
var this_id = $(ui.item).attr("id");
var preview = $(itemContext).html().replace(/<!--/g, '').replace(/-->/g, '');
$(itemContext).attr("id", this_id);
$(itemContext).css("width", $('#list2').width() - 20).addClass("ui-state-default").height('auto');
$(itemContext).html(preview);
//console.log(this_id);
//console.log(preview);
}
}); //.disableSelection()
//console.log(this_id);
//console.log(preview);
}
}); //.disableSelection()
$("#list2").bind("sortupdate", function(event, ui) {
//console.log($('#list2'));
var result = $('#list2').sortable('toArray');
var str = '';
for (var i = 0; i < result.length; i++) {
str += result[i] + "|";
var tmp = "#" + result[i] + " .drop-container";
if ($(tmp).length > 0) {
$(tmp).each(function() {
if ($(this).children("li").length) {
str += $(this).parent()[0].id + "|";
$(this).children("li").each(function() {
str += this.id + "|";
})
}
})
}
} //console.log(result);
alert(str);
});
function disp(list) {
var a=[];
for (var i=0;i<list.length;i++){
a.push(list[i]);
}
$( 'input' ).val(a.join('|'));
}
});
HTML:
<div class="workarea" style="border:1px solid green; width:60%; padding:0; margin:0 0 0 15px;float:left">
<h3>Your List</h3>
<ul id="list2" class="connectedSortable ui-sortable" style="width: 100%; min-height: 500px;">
<li style="width: 500px;" class="ui-state-default ui-sortable-handle" id="997">
5.jpg
<span class="pull-right">
<div class="text-right hroffset">
<a data-toggle="modal" class="preview" ><i class="fa fa fa-eye fa-2x valignmid text-green"></i></a>
<a href="javascript:void(0)" class="deletemedia"><i class="fa fa-times fa-stack fa-inverse"></i></a>
</div>
</span>
</li>
<li style="width: 500px;" class="ui-state-default ui-sortable-handle" id="998">
6.jpg
<span class="pull-right">
<div class="text-right hroffset">
<a data-toggle="modal" class="preview"><i class="fa fa fa-eye fa-2x valignmid text-green"></i></a>
<a href="javascript:void(0)" class="deletemedia"><i class="fa fa-times fa-stack fa-inverse"></i></a>
</div>
</span>
</li>
<li class="ui-draggable ui-draggable-handle ui-state-default ui-sortable-handle" style="width: 500px; height: auto;" id="layoutdata_24_3">
Layout4
<span class="pull-right">
<div class="text-right">
<a href="javascript:void(0)" class="deletemedia"><i class="fa fa-times fa-stack fa-inverse"></i></a>
</div>
</span>
<ul class="layout_panels" style="float:left">
<li id="119" data-layout_id="24" style="width: 481px;">
<span class="pancls pull-left">Panel: New ( 1360 X 768 ) </span><span class="pull-right"></span>
<div class="clearfix"></div>
<ul class="drop-container ui-sortable" style="width: 478px;">
<li class="ui-draggable ui-draggable-handle ui-state-default" style="height: auto; width: 477px;" id="1121">
<span class="pull-left">1.jpg</span>
<span class="pull-right">
<div class="text-right hroffset">
<a data-toggle="modal"class="preview"><i class="fa fa fa-eye fa-2x valignmid text-green"></i></a>
<a href="javascript:void(0)" class="deletemedia"><i class="fa fa-times fa-stack fa-inverse"></i></a>
</div>
</span>
</li>
<li class="ui-draggable ui-draggable-handle ui-state-default" style="height: auto; width: 477px;" id="433">
<span class="pull-left">2.jpg</span>
<span class="pull-right">
<div class="text-right hroffset">
<a data-toggle="modal" class="preview" ><i class="fa fa fa-eye fa-2x valignmid text-green"></i></a>
<a href="javascript:void(0)" class="deletemedia"><i class="fa fa-times fa-stack fa-inverse"></i></a>
</div>
</span>
</li>
<li class="ui-draggable ui-draggable-handle ui-state-default" style="height: auto; width: 800px;" id="996" >
<span class="pull-left">4.jpg</span>
<span class="pull-right">
<div class="text-right hroffset">
<a data-toggle="modal" class="preview" ><i class="fa fa fa-eye fa-2x valignmid text-green"></i></a>
<a href="javascript:void(0)" class="deletemedia"><i class="fa fa-times fa-stack fa-inverse"></i></a>
</div>
</span>
</li>
<li class="ui-draggable ui-draggable-handle ui-state-default" style="height: auto; width: 800px;" id="995" >
<span class="pull-left">3.jpg</span>
<span class="pull-right">
<div class="text-right hroffset">
<a data-toggle="modal" class="preview" ><i class="fa fa fa-eye fa-2x valignmid text-green"></i></a>
<a href="javascript:void(0)" class="deletemedia"><i class="fa fa-times fa-stack fa-inverse"></i></a>
</div>
</span>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
想要将项目放到面板区域之外。我该怎么做?代码有问题吗?
【问题讨论】:
-
使用内置 UI 和 in head 而不是 ondomready,因为那里也有 $(function()。顺便说一句,
disp是什么。也在这里发布一些代码 -
disp 功能只是重置掉落的物品,所以这里没有添加。
-
它会阻止代码执行
-
disp 函数只会将数组传递给另一个输入字段,仅此而已。
-
Sheez- 不添加它会给你的小提琴带来错误!!!
标签: javascript jquery html css jquery-ui