【问题标题】:jQuery UI Draggable on droppable elementjQuery UI Draggable on droppable element
【发布时间】:2013-12-25 16:40:26
【问题描述】:

我一直在尝试通过 jquery ui 在 Droppable 元素上放置一个 Draggable 元素,并且我几乎成功了,因为代码工作了一半,如果你在 droppable 上移动一点元素,它们正在改变它们的位置,我不不想要它,我希望它们会留在原处,但是如果您将它们拖到可放置区域之外,它们会回到它们的自然位置。

我完成的代码:

HTML:

<div class="cart">
<div class="products on">1</div>
<div class="products on">2</div>
</div>

<div class="products">3</div>
<div class="products">4</div>
<div class="new"></div>

jquery:

 $(function() {
  $(".products").draggable({
  appendTo: "body",
  revert : function(event, ui) {
  if($(this).attr("class").split(' ')[1] == 'on') {
  $(".new").append($(this)); $(this).removeClass("on"); return !event; 
  }else{
  $(this).data("uiDraggable").originalPosition = {top : 0,left : 0}; return !event; 
  } },
  start: function(event, ui) { ui.helper.data('dropped', false); },
  stop: function(event, ui) {
  if(!ui.helper.data('dropped')) {
  $("#"+$(this).html()).remove();
  } 
  }
  });

$(".cart").droppable({
  drop: function( event, ui ) {
    var text = ui.draggable.html();
    $(".cart").append('<div id="'+text+'">'+text+'</div>');
    ui.draggable.data('dropped', true);
  }
});

   });

http://jsfiddle.net/yreKf/8/

【问题讨论】:

  • 它们的自然栖息地在哪里?

标签: javascript jquery jquery-ui


【解决方案1】:

只需在 drop 事件上删除可拖动的销毁即可jsfiddle

drop: function( event, ui ) {
    var text = ui.draggable.html();
    $(".cart").append('<div id="'+text+'">'+text+'</div>');
    ui.draggable.data('dropped', true);
     $(ui.draggable).draggable({
              revert: "invalid"
          });
  }

【讨论】:

  • 这不是我的意思,我想选择拖拽到droppable并从droppable拖出。
  • 我的最后一个答案对你来说还不错
  • 几乎 :) 我只需要当你将可拖动对象拖到可放置对象之外时,他应该回到他的第一个位置,但是当你拖出时,可放置对象上的 div 应该转到 .new放在droppable旁边。
  • 对不起,我不明白你到底想要什么:(
  • 想象红色的盒子是一个篮子,黄色的是产品,如果你把产品拖到篮子里,它们会像掉落一样停留在那里,如果你把它们拖到区域外,它们将回到他们的第一位。但是有一些产品已经在篮子里,所以它们匹配为篮子里的产品,如果你把它们拖到篮子外面,它们会附加到.new。
【解决方案2】:

这可能就是你要找的答案

http://jqueryui.com/droppable/#revert

$(function() {
    $( "#draggable" ).draggable({ revert: "valid" });
    $( "#draggable2" ).draggable({ revert: "invalid" });

    $( "#droppable" ).droppable({
      activeClass: "ui-state-hover",
      hoverClass: "ui-state-active",
      drop: function( event, ui ) {
        $( this )
          .addClass( "ui-state-highlight" )
          .find( "p" )
            .html( "Dropped!" );
      }
    });
  });

【讨论】:

  • 我的意思是:想象红色的盒子是一个篮子,黄色的是产品,如果你把产品拖到篮子里,它们会一直放在那里,如果你拖动他们在区域之外,他们将回到他们的第一个位置。但是有一些产品已经在篮子里,所以它们匹配为篮子里的产品,如果你把它们拖到篮子外面,它们会附加到.new。
  • 那么有什么问题,你希望篮子里的产品在拖到哪里去?!
  • 在篮下时,他们会留在原地,在外时,他们应该离开篮筐区域并返回。
猜你喜欢
  • 1970-01-01
  • 2012-09-17
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 2012-01-14
相关资源
最近更新 更多