2

我发现一个 jQuery shuffle 插件有问题。它打破了我嵌套的可排序列表。在底部,我放置了一个演示问题的链接,如下所述。

html 很简单,有一个包含四个列表项的有序列表。这些列表项中的每一个都包含一个带有两个列表项的无序列表。底部有一个按钮可以打乱有序列表。

  <ol> 
    <li> 
      <ul> 
        <li>Item A</li> 
        <li>Item B</li> 
      </ul> 
    </li> 
    <li> 
      <ul> 
        <li>Item C</li> 
        <li>Item D</li> 
      </ul> 
    </li> 
    <li> 
      <ul> 
        <li>Item E</li> 
        <li>Item F</li> 
      </ul> 
    </li> 
    <li> 
      <ul> 
        <li>Item G</li> 
        <li>Item H</li> 
      </ul> 
    </li> 
  </ol> 
  <button type="button" class="shuffle">Shuffle</button>

有序列表是可排序的,无序列表也是可排序和连接的(例如,我可以将“项目 A”移动到“项目 G”下方)。到现在为止还挺好!

$(document).ready(function () {

  $('ol').sortable({
    placeholder: 'dashed'
  });
  $('ul').sortable({
    placeholder: 'dashed',
    connectWith: 'ul'
  });
  $('.shuffle').button().click(function(){
    $('ol').shuffle();
  });

});

随机播放按钮(几乎)做了我期望它做的事情,它随机播放有序列表(而不是无序!)。但在这样做的同时,它也破坏了无序的可排序列表。在我洗牌之前,我不再能够移动元素。

难道我做错了什么?插件有bug吗?

插件链接:http: //yelotofu.com/labs/jquery/snippets/shuffle/jquery.shuffle.js

链接到问题的演示:http: //jsbin.com/umeju6

4

1 回答 1

0

经过一些测试,我发现这样做很有效:

$(document).ready(function () {

  $('ol').sortable({
    placeholder: 'dashed'
  });
  $('ul').sortable({
    placeholder: 'dashed',
    connectWith: 'ul'
  });
  $('.shuffle').button().click(function(){
    $('ul').sortable("destroy");
    $('ol').shuffle();
    $('ul').sortable({
      placeholder: 'dashed',
      connectWith: 'ul'
    });
  });

});

不知道为什么。这也不是一个非常优雅的解决方案。

于 2011-02-17T14:11:09.647 回答