如何使用 jQuery 正确排序多个手风琴 [英] How to properly sort multiple accordions with jQuery
问题描述
这是我第一次发帖,如果我没有提供足够的细节,请告诉我.
我有一个包含多个手风琴的页面.我想使用多个手风琴,因为我希望用户能够同时打开多个部分,这不是手风琴的原生部分.
我还希望用户能够对这些手风琴进行分类.根据当前设置的页面方式,用户可以毫无问题地对手风琴进行排序.
当用户对手风琴进行排序时,我有一个脚本将关闭所有现有的手风琴,将它们的 id 存储在一个数组中,然后在用户完成排序后重新打开它们.那部分也很好用.
当您尝试将要排序的部分放在之前打开的两个部分之间时会出现问题.jQuery 似乎无法轻松分辨出一个部分从哪里开始,当它们以编程方式关闭时结束.请注意,如果它们已经关闭,它会按预期工作.
我已经尝试了几种方法来解决这个问题,包括在部分之间添加一个间隔 div 以及破坏手风琴,然后在排序完成后重新初始化它们都无济于事.
我怀疑问题的发生是因为当第一次抓住手风琴时,这些部分是打开的.但在那一点上,我关闭了所有部分,即使该部分关闭,当您尝试将一个部分放在两个部分之间时,它也会导致这些部分偶尔跳动.
我还注意到手风琴内容的高度会影响其中的因素.在我下面的示例中,第一个 div 在打开时会导致问题,并且您尝试对它们进行排序,但其他 div 则不那么重要.
这是我的代码.jQuery 是基本的 jQuery 库,为了简单起见,我编写的内容包含在内联:
<头><link href="/css/flick/jquery-ui.css" media="screen" rel="stylesheet" type="text/css"/><script type="text/javascript" src="/js/jquery.js"></script><script type="text/javascript" src="/js/jquery-ui.js"></script><script type="text/javascript">$(document).ready(function() {//添加手风琴的东西$(".accordion").accordion({自动高度:假,活动:假,可折叠:真实});//结束 $(".accordion").accordion//添加排序$('.sortable').sortable({开始:函数(e,ui){容器 = $(e.target);var parent_id = container.parent().parent().attr('id');expand_ones = 新数组();无功计数 = 0;var 总结 = '';var 孩子 = '';无功活动 = '';//现在关闭所有其他部分$.each($('#' + parent_id + '.accordion'), function() {//获取子元素,因为它具有我需要的 div idchild = $(this).children('div');//获取活动信息,查看是打开还是关闭active = $(this).accordion('option', 'active');//检查这个是否被展开if(parseInt(active) == active) {//存储这个 id 以便我们稍后打开它expand_ones[count] = $(child).attr('id');计数++;//并关闭手风琴$(this).accordion({ active: false });}//结束 if(parseInt(active) == active)});//结束 $.each($('#' + parent_id + ' .accordion'), function()},//结束开始:function(e, ui)停止:函数(e,ui){容器 = $(e.target);var parent_elem = '';//展开原先展开的for(var i = 0; i 头部><身体><div id="外层"><div class="box"><div class="accordion_wrapper sortable" rel="sections"><div id="accordion_a" class="section_accordion"><div class="accordion"><h4>手风琴A</h4><div id="accordion_a_content"><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p><p>东西</p>
<div id="accordion_b" class="section_accordion"><div class="accordion"><h4>手风琴B</h4><div id="accordion_b_content">东西