将可拖动物品放在可放置的容器上时会使其消失

时间:2015-03-18 22:50:30

标签: javascript jquery jquery-ui draggable jquery-ui-droppable

我有四个可拖动的元素和一个可放置的区域,目前看起来像this (Fiddle),我想通过添加以下功能来改善体验:

1)开始时:一旦它离开初始位置,就显示另一个元素。

2)on drop:draggable元素在掉落到可放置的容器上时会消失(例如“.frame”)。

最好的方法是什么?

谢谢,非常感谢任何帮助!

$(document).ready(function() {
  $("[id*=draggable]").draggable({
    containment: "#area51",
    revert: true,
    stack: ".frame_type"
  });
  $(".frame").droppable({
    hoverClass: "ui-state-active",

    drop: function(event, ui) {
      var currentId = $(ui.draggable).attr('id');

      if (currentId == "draggable-1") {
        $(this).css('background-color', '#f1c40f');
      } else if (currentId == "draggable-2") {
        $(this).css('background-color', '#e74c3c');
      } else if (currentId == "draggable-3") {
        $(this).css('background-color', '#3498db');
      } else if (currentId == "draggable-4") {
        $(this).css('background-color', '#9b59b6');
      }
    }

  });
});
<div class="container-fluid text-center">
  <div class="row" id="area51">
    <div class="col-xs-8">
      <div class="showroom">
        <div class="frame">
          <img class="display" src="http://placehold.it/200" />
        </div>
      </div>
    </div>
    <div class="col-xs-4">
      <div class="selection text-center">
        <ul class="list-unstyled">
          <li id="draggable-1" class="frame_type color-1"></li>
          <li id="draggable-2" class="frame_type color-2"></li>
          <li id="draggable-3" class="frame_type color-3"></li>
          <li id="draggable-4" class="frame_type color-4"></li>
        </ul>
      </div>
    </div>
  </div>
</div>

1 个答案:

答案 0 :(得分:1)

  1. <li/>元素现在包含可拖动的div元素的阴影和调整的样式以重叠它们
  2. jQuery .hide()用于在完成拖动时删除它们
  3. 我也很简化了JS。基本上你总是引用元素,所以不需要匹配ID或搜索它。

    CSS可以使用一些爱,因为我没有花太多时间。宽度小于样品中的宽度。

    http://jsfiddle.net/pratik136/L3abroyy/10/

    &#13;
    &#13;
    $(document).ready(function() {
      $("[id*=draggable]").draggable({
        containment: "#area51",
        revert: true,
        stack: ".frame_type"
      });
      $(".frame").droppable({
        hoverClass: "ui-state-active",
    
        drop: function(event, ui) {
          var elem = ui.draggable;
          $(this).css('background-color', elem.css('background-color'));
          $(elem.parent()).hide('slow');
        }
    
      });
    });
    &#13;
    /* General Styles */
    
    * {
      box-sizing: border-box;
    }
    html,
    body {
      background-color: #eee;
      color: #666;
    }
    .showroom {
      border: 1px solid #e1e1e1;
      border-radius: 5px;
      height: 500px;
      padding: 100px;
    }
    .frame {
      background-color: #fff;
      height: 300px;
      width: 300px;
      padding: 50px;
      border-radius: 5px;
    }
    .display {
      border-radius: 5px;
      height: 200px;
      width: 200px;
      background-color: #fff;
    }
    .selection {
      border-radius: 5px;
      height: 500px;
    }
    .frame_type {
      height: 50px;
      width: 100%;
      border-radius: 5px;
    }
    li {
      height: 50px;
      width: 30%;
      border-radius: 5px;
    }
    .color-1,
    .color-1 div {
      background-color: #f1c40f;
    }
    .color-2,
    .color-2 div {
      background-color: #e74c3c;
    }
    .color-3,
    .color-3 div {
      background-color: #3498db;
    }
    .color-4,
    .color-4 div {
      background-color: #9b59b6;
    }
    .ui-state-active {
      background-color: #e1e1e1 !important;
    }
    &#13;
    <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
    
    <div class="container-fluid text-center">
      <h1>Paintings & Frames: Interactive App</h1>
    
      <div class="row" id="area51">
        <div class="col-xs-8">
          <div class="showroom">
            <div class="frame">
              <img class="display" src="http://placehold.it/200" />
            </div>
          </div>
        </div>
        <div class="col-xs-4">
          <div class="selection text-center">
            <h3>Draggable Frames</h3>
    
            <ul class="list-unstyled">
              <li class="color-1">
                <div id="draggable-1" class="frame_type"></div>
              </li>
              <li class="color-2">
                <div id="draggable-2" class="frame_type"></div>
              </li>
              <li class="color-3">
                <div id="draggable-3" class="frame_type"></div>
              </li>
              <li class="color-4">
                <div id="draggable-4" class="frame_type"></div>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </div>
    &#13;
    &#13;
    &#13;