javascript - Accordion 遏制无法正常工作

标签 javascript jquery zurb-foundation accordion

我使用 Accordion 构建了一个父子系统。结构如下所示

parent1
  child1
  child2
  child3
parent2
  child4
  child5
  child6
parent3
  child7
  child8
  child9

我还添加了一项拖放功能。我的要求是我不希望 child 从当前的 parent 中被拖出来。它只能在当前父级中拖动和替换。例如,子项 1,2 和 3 的位置可以通过拖动互换,但子项 2 不应进入父项 2 和父项 3 内部。另外,不应允许parent2子级拖入parent1和parent2

我做了一项研究,发现 Accordion 提供了一个属性containment:parent但它不能正常工作。谁能帮我解决这个问题吗?

<div id="available_fields_container" class="accordion list_container ui-sortable active" data-accordion="one">
  <dd class="accordion-navigation active" id="data_download_fields">
    <a href="#data_download_fields">
      <b>FootBall Fields</b>
      <span class="collapse-symbol"></span>
    </a>
    <span class="select-group" data-fields="#data_download_fields">Select all</span>
    <div id="data_download_fields" class="content active" data-group="FootBall Fields">

      <div class="field_items"  data-index="4" data-group="FootBall Fields">
        Andrew
        <span class="plus-icon action-icon">+</span>
        <i class="icon-cross2 action-icon"></i>
      </div>
      <div class="field_items"  data-index="5" data-group="FootBall Fields">
        Sam
        <span class="plus-icon action-icon">+</span>
        <i class="icon-cross2 action-icon"></i>
      </div>

    </div>
  </dd>

    <dd class="accordion-navigation " id="data_download_hockey_fields">
      <a href="#data_download_hockey_fields">
        <b>hockey Fields</b>
        <span class="collapse-symbol"></span>
      </a>
      <span class="select-group" data-fields="#data_download_hockey_fields">Select all</span>
      <div id="data_download_hockey_fields" class="content " data-group="hockey Fields">
          <div class="field_items"  data-index="0" data-group="hockey Fields">
  jason
    <span class="plus-icon action-icon">+</span>
    <i class="icon-cross2 action-icon"></i>
  </div>
  <div class="field_items"  data-index="1" data-group="hockey Fields">
  Jane
    <span class="plus-icon action-icon">+</span>
    <i class="icon-cross2 action-icon"></i>
  </div>

      </div>
    </dd>

</div>

最佳答案

为了实现这些类型的事情,你可以使用 jquery 可排序回调。 在您的情况下,您将需要 startout 回调

var before_drag;

start: function(event, ui){
  before_drag = ui.item.parent().attr('id')
}

out: function(event, ui){
  var after_drag = ui.item.parent().attr('id')
        if(before_drag != after_drag){
          event.preventDefault();
          event.stopPropagation();
        }
}

关于javascript - Accordion 遏制无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49252928/

相关文章:

javascript - 绘图 svg :circle on d3. svg.area().interpolate ("basis")

javascript - "even last"数组 JavaScript 练习

javascript - 即使在 extjs 的表单中隐藏显示元素后,如何保持滚动位置?

php - 在 Symfony2 运行时包含 Zepto 或 jQuery

javascript - 当所选学生大于 0 时 react 打开折叠

javascript - Jquery Datatable - 将值从一个 "Data"元素传递到另一个元素

javascript - Ajax 无法在 Codeigniter 的页面中工作

html - 具有 100% 宽度的响应式表格

css - Zurb Foundation 图像和文本框架、居中问题和导航栏最大宽度

javascript - bokeh - 获取事件图例项目的列表