javascript - 将顺序设置为 jquery 可排序

标签 javascript jquery

我对无序列表 (ul) 使用 jquery draggble 函数,并面临在项目更改后获取项目顺序并设置页面加载顺序的问题。假设我们有以下代码:

<html>
   <head>
     <script src="http://code.jquery.com/jquery-latest.js"></script>
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js>  </script>
     <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
   <script>
      $(document).ready(function(){
            $('.secondblock').sortable({axis:'y'});

            $(".block").sortable({
            axis: 'y',
            update: function(event, ui) {// order changed
               var order = jQuery(this).sortable('toArray');
               // set this order to .secondblock

            }
         });
      });
  </script>

  </head>
  <body>
      <ul class="block" type="none">
           <li id = "one">1</li>
           <li id = "two">2</li>
           <li id = "three">3</li>
           <li id = "four">4</li>
           <li id = "five">5</li>
      </ul>
      <ul class="secondblock" type="none">
           <li id = "one">1</li>
           <li id = "two">2</li>
           <li id = "three">3</li>
           <li id = "four">4</li>
           <li id = "five">5</li>
      </ul>
  </body>

有没有可能的解决方案?

最佳答案

首先,同一个 ID 不应在文档中出现两次。那会引起各种各样的问题。

相反,为第二个列表中的项目设置数据属性以反射(reflect)第一个列表中的相应项目:

<ul class="block" type="none">
    <li id = "one">1</li>
    <li id = "two">2</li>
    <li id = "three">3</li>
    <li id = "four">4</li>
    <li id = "five">5</li>
</ul>
<ul class="secondblock" type="none">
    <li data-block-id = "one">1</li>
    <li data-block-id = "two">2</li>
    <li data-block-id = "three">3</li>
    <li data-block-id = "four">4</li>
    <li data-block-id = "five">5</li>
</ul>

然后在第二个列表中反射(reflect)第一个列表的排序很简单:

$('.block').sortable({update: sortOtherList});

function sortOtherList(){
    $('.block li').each(function(){ 
        $('.secondblock [data-block-id=' + $(this).attr('id') + ']')
            .remove()
            .appendTo($('.secondblock'));

    });
}

在这里查看它的工作情况:http://jsfiddle.net/6HKZG/2/

关于javascript - 将顺序设置为 jquery 可排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11870024/

相关文章:

javascript - JavaScript 对象均未在浏览器上运行或显示

javascript - 如何检查数组在 javascript 中是否相等?

javascript - 通过promise $q angularjs接收不完整的数据

javascript - 滚动时有多个动画

javascript - AngularJS : Reuse custom directive programmatically

javascript - 防止在 Sails.js 中使用删除和更新方法

javascript - 如何在多个 SlickGrid 上使用通用格式化程序?

javascript - 我怎样才能用javascript找出单元格的大小

jquery - 如何使用 jQuery 将多个数据变量保存到一个 cookie 中

jquery - 如何使用 JQuery 获取列的状态?