我看到这个问题上只有几个变种问了其他几个地方,特别是here和here。
基本上,我有一个跳棋游戏板,棋盘上的每个方块都是可放置的,每个游戏都是可拖动的。每个方块一次只能有一个,我试图根据广场上是否有一块来切换启用/禁用方法。
以下是我到目前为止的链接:http://jsbin.com/ayalaz,以下是最相关的代码。
function handleDrop(e, ui) {
var tileNumber = $(this).data('tile');
// Make the gamepiece snap into the tile
ui.draggable
.data({ // WHAT IF PIECE IS SET BACK DOWN IN SAME TILE... CHECK FOR IT!
'preRow': ui.draggable.data('curRow'),
'preCol': ui.draggable.data('curCol'),
'curRow': $(this).data('row'),
'curCol': $(this).data('col')
});
$(this).append($(ui.draggable));
ui.draggable
.position({
of: $(this),
my: 'left top',
at: 'left top'
});
$(this).droppable('disable');
//console.log("Gamepiece set down at: (" + $(this).data('row') + "," + $(this).data('col')+ ")");
}
function handleOut(e, ui) {
// HOW TO TOGGLE DROPPABLE??
$(this).droppable('enable');
}
有什么建议吗?
提前致谢! 杰里米
答案 0 :(得分:2)
看起来您在第一次放置事件后成功禁用了tile上的droppable。您的问题是,您最初没有在初始的占用磁贴集上将droppable设置为disabled。
在您创建游戏板和棋子后,这应该可以实现,假设我的CSS选择器准确地反映了您的结构:
$('div.gamePiece').parent().droppable("option", "disabled", true);
请注意,这与在初始选项中更改droppability的语法不同。来自jQuery UI droppable documentation:
//initialize
$( ".selector" ).droppable({ disabled: true });
//setter
$( ".selector" ).droppable( "option", "disabled", true );
修改强>
我认为$(this).droppable('disable');
和$(this).droppable('enable');
jquery-ui 具有启用和禁用的别名功能是错误的。
enable: function() {
return this._setOption( "disabled", false );
},
disable: function() {
return this._setOption( "disabled", true );
},