2013-03-06 65 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