嵌套jQuery sortables的问题

前端之家收集整理的这篇文章主要介绍了嵌套jQuery sortables的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的页面的基本 HTML结构:
  1. <div id="selectedItemsTop">
  2. <ul>
  3. <li>
  4. Root element
  5. <ul>
  6. <li>Level One a</li>
  7. <li>Level One b</li>
  8. <li>
  9. Level One parent
  10. <ul>
  11. <li>Level Two a</li>
  12. <li>
  13. Level Two parent
  14. <ul>
  15. <li>Level Three a</li>
  16. <li>Level Three b</li>
  17. </ul>
  18. </li>
  19. <li>Level Two b</li>
  20. </ul>
  21. </li>
  22. <li>Level One c</li>
  23. </ul>
  24. </li>
  25. </ul>
  26. </div>

例如:

>根元素

>一级a
>一级b
>一级父母

>二级a
>二级父母

>三级a
>三级b

>二级b

>一级c

在每个缩进级别上可以有超过根的任何数量的项目,但是每个级别只有3个级别,并且每个级别只有一个父级(即:根目录下总是正好3个以上,但是< li> s是可变的).

我允许用户使用jQuery UI Sortable插件重新排序此结构.要添加新项目,有三组项目(第一级项目,第二级项目,第3级项目),它们位于此树的页面上.用户可以从那里拖动到列表中来添加它 – 但必须在相应级别添加它.

我有这个工作已经使用connectToSortable选项draggable:

  1. $('ul.availableItems').each(function(i) {
  2. var selector = "#selectedItemsTop > ul";
  3. for (var j = 0; j <= i; ++j) { // count from 0 to [0,1,2]
  4. selector += " > li > ul";
  5. }
  6. // eg: selector == "#selectedItemsTop > ul > li > ul"
  7. // eg: selector == "#selectedItemsTop > ul > li > ul > li > ul"
  8. // eg: selector == "#selectedItemsTop > ul > li > ul > li > ul > li > ul"
  9. $(this)
  10. .find('li')
  11. .draggable({
  12. connectToSortable : selector
  13. })
  14. ;
  15. });
  16. $('#selectedFieldsTop > ul > li ul').sortable();

正如我所说,这适用于除了IE之外的所有内容.一级物品可以完美地工作,但是不会将2级或3级物品添加到可分类物品中.尝试对已经存在的2级或3级项目中的一项进行排序,使其获得整个“一级父级”项目并移动整个项目.

有什么你能想到的可以使这个工作在Firefox而不是IE吗?你能想出一个不同的方法来处理这个问题吗?

版本:Firefox 3.6,IE7,jQuery 1.3.2,jQuery UI 1.7.2

更新:
这是JSBin上的工作代码http://jsbin.com/ixabo/edit – 不出所料,它在IE中不起作用,但我认为这是JSBin的问题(“_console未定义”).要看到它半工作,可能复制/粘贴到本地文件并在IE中打开它.

解决方法

你能使用其他插件吗? jsTree做得很好.

猜你在找的jQuery相关文章