在jquery selectable中拖动非选定的div

Posted

技术标签:

【中文标题】在jquery selectable中拖动非选定的div【英文标题】:Drag non-selectee div within jquery selectable 【发布时间】:2020-07-05 11:15:45 【问题描述】:

我正在尝试使 jquery 可选择,它使某些元素可以使用过滤器选择,但也有一些其他具有不同类的元素可用于拖动(但我 不是试图使相同的元素可选择和拖动)。

这是一个基本示例:目标是能够将第一个“x”(这是一个 .boundary 类的 div)拖到第二个“x”中并获得一些反馈,而 div A、B、 C(具有 .tok 类)通常是可选的。这两件事不应该相互影响:A B 和 C 应该是可选择的,每个 'x' 应该是可拖动的。

我不需要'x' divs 完全移动,甚至根本不需要改变位置,只是从一个拖到另一个,也许会看到我通过的每个 x 以某种方式突出显示,并获取信息x 在我落下时被拖入其中。

#selectable .ui-selecting 
  background: #FECA40;


#selectable .ui-selected 
  background: #F39814;
  color: white;


.tok 
  display: inline-block;
  margin: 1px


.boundary 
  display: inline-block;
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<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() 
    $("#selectable").selectable(
      filter: '.tok'
    );
  );

  // Option 1: with jquery draggable
  $(".boundary").draggable();

  // Option 2: bind dragstart etc.
  $(document).ready(function() 
    $('.boundary').on("dragstart", function(event) 
      alert('drag started');
    );
    $('.boundary').on("dragenter dragover drop", function(event) 
      event.preventDefault();
      alert(event.type);
    );
  )
</script>

<div id="selectable">
  <div id="t1" class="tok">A</div>
  <div id="b1" class="boundary">x</div>
  <div id="t2" class="tok">B</div>
  <div id="b2" class="boundary">x</div>
  <div id="t3" class="tok">C</div>
</div>

【问题讨论】:

拖动和选择似乎有效。这是给你带来麻烦的部分吗? “...查看我通过的每个 x 以某种方式突出显示,并获取当我放下时 x 被拖入的信息。” @showdev 你说得对,它在 *** 运行代码 sn-p 中运行良好。区分呈现的 html 我发现了问题:我偶然将 .draggable() 放在了 $(document).ready 之外,并且我在文件中的 JS 之后有了 HTML,所以我正在应用它的类一定不存在...我现在能够修复它,谢谢! 抱歉,我的编辑悄悄解决了这个问题。我已重新编辑以恢复您的原始内容。 实际上它非常有帮助,因为它允许我将工作示例与我的代码进行比较。谢谢! 【参考方案1】:

我留下答案而不是删除问题,以防其他人犯类似错误:应在相关元素存在后调用 .draggable() ,因此将其放入 $(document).ready 或制作确保相关的 HTML 部分已经序列化是必要的。

这个问题中的代码 sn-p 演示了一个包含不可选择元素的可拖动元素 - 这个示例可能对其他人有用,因为我无法轻松找到这样的示例。

【讨论】:

以上是关于在jquery selectable中拖动非选定的div的主要内容,如果未能解决你的问题,请参考以下文章

如何从 select2() 下拉 Jquery 中禁用选定属性?

如何在javascript变量中获取jquery select2选定值[重复]

JQuery Select2 不会更改选定的 html 选项

获取select2中选定选项的值,然后使用jquery将值设置为输入文本?

使用 asp.net 从后面的代码中获取 Jquery 的 Select2 的多个选定值

jquery可拖动非列表项到可排序列表