【问题标题】:<br> element not working after re-ordering div order<br> 重新排序 div 顺序后元素不起作用
【发布时间】:2017-03-07 16:28:58
【问题描述】:

我正在使用 jQuery 的 .sortable 函数来允许用户拖放 &lt;div&gt; 来重新排序。在每个&lt;div&gt; 上方是一个&lt;br&gt;,它在其上方添加一个空格。

但是,在重新订购 &lt;div&gt; 后,&lt;br&gt; 停止工作 - 空间“缺失”。

JsFiddle:https://jsfiddle.net/1Ln5zzvh/

$(document).ready(function() {
  $('#sortable').sortable({
    axis: 'y',
  });
});
div#container {
  border: 1px solid;
  padding: 10px;
}
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
<div id="sortable">
  <br>
  <div id="container">
    helloooooooooooooooooooo
  </div>
  <br>
  <div id="container">
    helloooooooooooooooooooo
  </div>
  <br>
  <div id="container">
    helloooooooooooooooooooo
  </div>
</div>

重新订购前:

重新订购后:

【问题讨论】:

  • 为什么不使用边距来代替
  • 并使用不同的类!
  • 使用底部边距 10px 代替 br
  • 你只是拖动 div 而不是 br
  • &lt;br&gt; 确实有效。只是您正在重新排序&lt;div&gt;,而不是&lt;br&gt;

标签: jquery html jquery-ui-sortable


【解决方案1】:

您不应为此目的使用&lt;br&gt; 标签。改用边距。还要确保不要多次使用 id,因为它们应该是唯一的!

但是,因为您只订购 div 而不是 br 标签,所以会出现问题。因此 br 标记最终位于末尾或顶部(基于您拖动的 div)。

$(document).ready(function() {
  $('#sortable').sortable({
    axis: 'y',
  });
});
div.container {
  border: 1px solid;
  padding: 10px;
}

/* Selects every div.container that are preceded by a div.container element */
div.container ~ div.container {
    margin-top: 5px;
}
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
<div id="sortable">
  <div class="container">
    helloooooooooooooooooooo
  </div>
  <div class="container">
    helloooooooooooooooooooo
  </div>
  <div class="container">
    helloooooooooooooooooooo
  </div>
</div>

【讨论】:

    【解决方案2】:

    使用margin 而不是&lt;br&gt; updated fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 2019-06-27
      • 2018-05-01
      • 2011-05-08
      • 2020-05-14
      • 1970-01-01
      相关资源
      最近更新 更多