如何使用拖放JQuery仅移动特定项目?

时间:2017-03-11 08:37:29

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

我不想将所有项目移动到div。我想只将特定项目从一个div移动到另一个div

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Sortable - Connect lists</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <style>
  #sortable1, #sortable2 {
    border: 1px solid #eee;
    width: 142px;
    min-height: 20px;
    list-style-type: none;
    margin: 0;
    padding: 5px 0 0 0;
    float: left;
    margin-right: 10px;
  }
  #sortable1 li, #sortable2 li {
    margin: 0 5px 5px 5px;
    padding: 5px;
    font-size: 1.2em;
    width: 120px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script>
  $( function() {
    $( "#sortable1, #sortable2" ).sortable({
      connectWith: ".connectedSortable"
    }).disableSelection();
  } );
  </script>
</head>
<body>

<ul id="sortable1" class="connectedSortable">
  <li class="ui-state-default">StoreID</li>    // I want to move only this STOREID li element to another UL
  <li class="ui-state-default">ItemLookupCode</li>
  <li class="ui-state-default">ExtendedCost</li>
  <li class="ui-state-default">Quantity</li>
  <li class="ui-state-default">Price</li>
</ul>

<ul id="sortable2" class="connectedSortable">

</ul>


</body>
</html>

我想只将UL StoreID 的第一个元素移动到另一个UL或所有元素。如何实现它。

由于

1 个答案:

答案 0 :(得分:0)

最好使用updatereceive回调。关键是:ui.sender.sortable("cancel");这将恢复更改。

工作示例:https://jsfiddle.net/Twisty/4f5yh3pa/

<强> HTML

<ul id="sortable1" class="connectedSortable">
  <li class="ui-state-default acceptable">StoreID</li>
  <li class="ui-state-default">ItemLookupCode</li>
  <li class="ui-state-default">ExtendedCost</li>
  <li class="ui-state-default">Quantity</li>
  <li class="ui-state-default">Price</li>
</ul>

<ul id="sortable2" class="connectedSortable">
</ul>

<强> CSS

.connectedSortable {
  border: 1px solid #eee;
  width: 142px;
  min-height: 20px;
  list-style-type: none;
  margin: 0;
  padding: 5px 0 0 0;
  float: left;
  margin-right: 10px;
}

#sortable1 {
  background: #fff;
}

#sortable2 {
  background: #999;
}

.connectedSortable li {
  margin: 0 5px 5px 5px;
  padding: 5px;
  font-size: 1.2em;
  width: 120px;
}

<强>的JavaScript

$(function() {
  $(".connectedSortable").sortable({
    connectWith: ".connectedSortable",
    update: function(e, ui) {
      if ($(e.target).attr("id") == "sortable2") {
        if (ui.item.hasClass("acceptable")) {
          console.log($(this).attr("id") + " accepted item: ", ui.item);
        } else {
          console.log($(this).attr("id") + " rejected item: ", ui.item);
          ui.sender.sortable("cancel");
        }
      }
    }
  }).disableSelection();
});

如果你想让它看起来更像是可拖动的,你可以设置动画。