2011-02-17 104 views
2

我遇到了一個我找到的jQuery shuffle插件的問題。它打破了我的嵌套可排序列表。在底部,我把一個鏈接展示了問題,如下所述。jQuery shuffle插件打破jQuery-UI排序

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

}); 

shuffle按鈕(幾乎)做我期望它做的事情,它洗牌有序列表(而不是無序!)。但正如它那樣,它也打破了無序的可排序列表。在我洗牌之前,我不再能夠移動元素了。

我做錯了什麼?插件中是否存在錯誤?

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

鏈接到問題的演示:http://jsbin.com/umeju6

回答

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

}); 

不知道爲什麼,雖然。這也不是一個非常優雅的解決方案。