2013-03-06 68 views
2

有沒有一種方法來禁用在淘汰賽js中使用排序時的拖放。我有一個方形網格,裏面有5 * 5個方格。我想禁止拖放一些廣場不是所有的..這怎麼可以做到?任何建議..禁用在淘汰賽js排序拖放

+0

的可能重複[在淘汰賽排序禁用個別項目(http://stackoverflow.com/questions/14611775/disabling-individual-items-in-knockout-sortable) – nemesv 2013-03-06 13:59:38

回答

6

有一個在jQuery UI的這種支持排序this on the demo page.

你只需要一個特殊的類添加到您的非可排序的項目(例如與css結合),那麼你需要使用cancel option哪裏你可以設置這個不可排序的類名。

而且你可以指定sortable選項與options參數綁定:

data-bind="sortable: {data: items, options: { cancel: '.no-sort' }}" 

一個簡單的演示HTML:

<ul data-bind="sortable: {data: items, options: { cancel: '.no-sort'}}"> 
    <li data-bind="text: name, css: { 'no-sort': disabled}"></li> 
</ul> 

而且JS:

var vm = { 
    items: [ 
     {name: 'name1', disabled: false}, 
     {name: 'name2', disabled: false}, 
     {name: 'name3', disabled: true}, 
     {name: 'name4', disabled: false}, 
     {name: 'name5', disabled: true} 
    ] 
} 

ko.applyBindings(vm); 

演示JSFiddle.

+0

感謝解決方案,但如果你移動一個以上的項目「沒有排序」的項目,它會下移如果我想保持一個項目在上面,永遠不會移動? – 2013-03-15 10:20:41

+1

@ImranRashid那麼你需要設置'items'選項。請參閱[jQuery的演示頁面(http://jqueryui.com/sortable/#items)以及該http://jsfiddle.net/5s86r/ – nemesv 2013-03-15 12:34:36

+0

感謝@nemesv它的工作原理 – 2013-03-15 12:48:23