使用特定元素拖放移动项目 jquery

move item with specific element drag and drop jquery

你好我左边有列表,当我拖动元素时它必须移动到元素匹配 在这段代码中: -我试图为每个元素创建一个数据ID,如果两个ID相等,它就会滑入相应的元素 - 如果我移动 StoreID 但在 ItemLookupCode 中不起作用,它会起作用

$(function() {
  $(".connectedSortable").sortable({
    connectWith: ".connectedSortable",
    update: function(e, ui) {
      var s=ui.item.attr("data-id");

var s1=$("#sortable2 li").attr("data-id");

      if (s ==s1) {
    
 
     
      }
      if (s!=s1){
      alert("no")
        ui.sender.sortable("cancel");
      }
    }
  }).disableSelection();
});
.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;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<ul id="sortable1" class="connectedSortable">
  <li data-id="2" class="ui-state-default acceptable">StoreID</li>
  <li data-id="3" class="ui-state-default">ItemLookupCode</li>
  <li data-id="4" class="ui-state-default">ExtendedCost</li>
  <li data-id="5" class="ui-state-default">Quantity</li>
  <li data-id="6" class="ui-state-default">Price</li>
</ul>

<ul id="sortable2" class="connectedSortable">
  <li data-id="2"></li>
    <li data-id="3"></li>
</ul>

这是我的代码。首先,当您将 sortable1 项目移动到 sortable2 时,该属性将被复制到 sortable2,因此请更改 sortable2 的属性名称以防止混淆。然后你应该检查 sortable2 中的所有项目。

$(function() {
  $(".connectedSortable").sortable({
    connectWith: ".connectedSortable",
    update: function(e, ui) {
      if (!ui.sender) return
      var s = ui.item.attr("data-id");
      var matches = $("#sortable2 li[data-target=" + s + "]").length
      if (matches === 0) {
        ui.sender.sortable("cancel");
      }
    }
  }).disableSelection();
});
.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;
  cursor: move;
}

#sortable1 {
  background: #fff;
}

#sortable2 {
  background: #999;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<ul id="sortable1" class="connectedSortable">
  <li data-id="2" class="ui-state-default acceptable">StoreID</li>
  <li data-id="3" class="ui-state-default">ItemLookupCode</li>
  <li data-id="4" class="ui-state-default">ExtendedCost</li>
  <li data-id="5" class="ui-state-default">Quantity</li>
  <li data-id="6" class="ui-state-default">Price</li>
</ul>

<ul id="sortable2" class="connectedSortable">
  <li data-target="2"></li>
  <li data-target="3"></li>
</ul>