Плагин jQuery shuffle прерывает сортировку jQuery-UI - PullRequest
2 голосов
/ 17 февраля 2011

У меня проблема с плагином 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();
  });

});

Кнопка перетасовки (почти) делает то, что я от нее ожидаю, она перетасовывает упорядоченный список (а не неупорядоченный!).Но при этом он также разбивает неупорядоченные сортируемые списки.Я больше не могу перемещать элементы так, как они работали до того, как я перетасовал.

Я что-то не так делаю?Есть ли ошибка в плагине?

Ссылка на плагин: http://yelotofu.com/labs/jquery/snippets/shuffle/jquery.shuffle.js

Ссылка на демонстрацию проблемы: http://jsbin.com/umeju6

1 Ответ

0 голосов
/ 17 февраля 2011

После некоторого тестирования я обнаружил, что это работает:

$(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'
    });
  });

});

Не уверен, почему, хотя. Это тоже не очень элегантное решение.

...