2016-09-24 79 views
-1

我已经开发了使用jquery ui的嵌套拖放,但它不允许我放置
.drop-container div之外。这里是的jsfiddle审查:嵌套拖放使用jquery ui不能正常工作

FIDDLE

一旦我拖累了项目,将其拖放到#DIV列表2,它不工作。我如何解决它?

下面是代码:

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> 

希望将面板区域外落项。我该怎么做?代码中有没有问题?

+0

使用内置的用户界面,而不是ondomready,因为你也有一个$(function()函数,顺便提一下,这里也提供了一些代码 – mplungjan

+0

disp函数只是用来重置被丢弃的物品 –

+0

那么它阻止代码执行 – mplungjan

回答

-1

您的小提琴有一个Javascript错误,因为找不到disp。你或者没有这个function这里需要实现它,或者它存在于你的代码中,但没有被添加到小提琴中。无论如何,拖动的作品,但你需要有一个function这将显示你在盒子里放下的东西。从名称来看,disp应该这样做,您需要修复或实施它,具体取决于您的情况。

+0

没有显示功能只是重置丢弃的项目,这就是为什么不添加在这里。 –

+0

@BhumiShah,它会导致一个错误,所以你应该创建一个新的小提琴并测试它,以确保只有你所说的问题适用于它。当你完成后,让我们知道它来帮助你。 –

+0

我更新了小提琴。 –