【问题标题】:Get the element where the sortable element is dropped获取可排序元素被丢弃的元素
【发布时间】:2023-03-11 06:59:01
【问题描述】:

我正在使用带有两个不同列表的 jquery 的可排序插件。 我可以将一个列表的项目放到另一个列表中。

假设我有两个列表

List1-:  Item1, Item2, Item3, Item4

List2-: ItemList1, ItemList2, ItemList3

当我将 item2 拖到 ItemList2 上时,新列表将是

List2-: ItemList1, Item2, ItemList2, ItemList3

我想获取 ItemList2(Item2 被丢弃的地方)。

这是我的代码

<ul id="sortable1" class="connectedSortable">
    <li class="ui-state-default" id="a">Item 1</li>
    <li class="ui-state-default">Item 2</li>
    <li class="ui-state-default">Item 3</li>
    <li class="ui-state-default">Item 4</li>
    <li class="ui-state-default">Item 5</li>
</ul>

<ul id="sortable2" class="connectedSortable">
    <li class="ui-state-highlight">ItemList 1</li>
    <li class="ui-state-highlight">ItemList 2</li>
    <li class="ui-state-highlight">ItemList 3</li>
    <li class="ui-state-highlight">ItemList 4</li>
    <li class="ui-state-highlight">ItemList 5</li>
</ul>

和jquery

 $("#sortable1, #sortable2").sortable({
    connectWith: ".connectedSortable"
 }).disableSelection();

【问题讨论】:

  • 什么意思“我想得到ItemList2”..?您想在何时/何地访问它..?你能说得更具体点吗?
  • 我想获取元素被删除的元素

标签: jquery jquery-ui drag-and-drop jquery-ui-sortable


【解决方案1】:

根据您的示例,您可以使用 next() 方法访问已删除元素旁边的项目。在receiveupdate 回调中,第二个参数的item 属性指的是被删除的元素。您可以访问下一个元素,例如ui.item.next()

$("#sortable1, #sortable2").sortable({
  connectWith: ".connectedSortable",
  update: function(event, ui) {
    ui.item.next().addClass("selected");
  }
});
.selected {
  background: red !important;
}
<link href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<ul id="sortable1" class="connectedSortable">
  <li class="ui-state-default" id="a">Item 1</li>
  <li class="ui-state-default">Item 2</li>
  <li class="ui-state-default">Item 3</li>
  <li class="ui-state-default">Item 4</li>
  <li class="ui-state-default">Item 5</li>
</ul>
<ul id="sortable2" class="connectedSortable">
  <li class="ui-state-highlight">ItemList 1</li>
  <li class="ui-state-highlight">ItemList 2</li>
  <li class="ui-state-highlight">ItemList 3</li>
  <li class="ui-state-highlight">ItemList 4</li>
  <li class="ui-state-highlight">ItemList 5</li>
</ul>

旁注:disableselection() 自 jqueryui 1.9 起已弃用,文档明确指出:

“禁用文本选择很糟糕。不要使用它。”

【讨论】:

  • Thnx 的建议......但每当我将元素放到另一个列表中时,它总是位于最后
  • @Twix 你是什么意思它总是坐在最后..?根据您提供的代码,它将被放置在它被丢弃的地方......这个答案基于您提供的示例......请使用更多信息更新问题。
  • 我知道原因是什么,但是每当我放下任何项目时,它都会放在列表的最后一个位置。另外我将第二个列表中的li 设置为display:inline。否则代码同上
  • @尝试为第二个列表的&lt;li&gt; 添加display:inline,但在上面的sn-p 中没有发生。您可以制作一个在线演示来演示您的问题..吗?也许通过添加有问题的代码 sn-p 或 jsfiddle..?
猜你喜欢
  • 2011-02-27
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多