Sha*_*laG 1 jquery drag-and-drop jquery-ui-draggable jquery-ui-droppable
我已经创建了一个拖放游戏,以便开始自学jquery.一切似乎都有效,但你可以将多个项目放在同一个方格上.如果占位符中有图像,我想禁用droppable.
我调查过:
`greedy: true`
Run Code Online (Sandbox Code Playgroud)
这会禁用掉线,但我不知道如何再次启用它,还有:
$(this).droppable( 'disable' );
Run Code Online (Sandbox Code Playgroud)
如果块/图像恢复到原始位置或移动到另一个方块,我可以得到这两个来禁用掉落但不知道如何让它们再次启用它.
完整版:http: //creativelabel.co.uk/drag-and-drop/
更新:这是可放置插槽的代码.
for ( var i=0; i<=19; i++ ) {
var images = 'images/slot' + slotNumbers[i] + '.jpg';
$('<div class="placeholder"><div class="img-slot"></div></div>').attr('id', 'slot'+slotNumbers[i]).data( 'slotNumbers', slotNumbers[i] ).appendTo( '#imgSlots' ).droppable( {
accept: '#images img',
hoverClass: 'hovered',
drop: handleDropEvent,
activate: handleDragEvent
});
Run Code Online (Sandbox Code Playgroud)
这是drop:事件代码:
function handleDropEvent( event, ui ) {
var slotNumber = $(this).data( 'slotNumbers' );
var imgNumber = ui.draggable.data( 'number' );
ui.draggable.addClass( 'dropped' );
$(this).droppable( 'disable' );
ui.draggable.position( { of: $(this), my: 'right top', at: 'right top' } );
if ( slotNumber == imgNumber ) {
ui.draggable.addClass( 'img-match' );
ui.draggable.data("valid", true);
imgMatch++;
} else {
if(ui.draggable.data("valid")) {
imgMatch--;
ui.draggable.data("valid", false);
}
}
Run Code Online (Sandbox Code Playgroud)
该activate:代码:
function handleDragEvent( event, ui ) {
$(this).droppable( 'enable' );
if(ui.draggable.data("valid")) {
imgMatch--;
$('input[name=Score]').val(imgMatch);
$('#score h1').text(imgMatch);
ui.draggable.data("valid", false);
}
}
Run Code Online (Sandbox Code Playgroud)
该 文档(看"方法"选项卡下)表明禁用您使用:
$(this).droppable( 'disable' );
Run Code Online (Sandbox Code Playgroud)
并使您能够使用
$(this).droppable( 'enable' );
Run Code Online (Sandbox Code Playgroud)
更新:检查这个实例:http://jsfiddle.net/QqJRs/ 将其中一个红色方块拖到大框并放下它(它变为绿色表示它被丢弃).当一个人在里面时,你不能把任何其他人丢到这个盒子里.现在拖出一个(它返回红色表示已删除).现在你可以放弃任何其他人.
这就是我在下面的评论中描述的关键; 当您在容器中放置项目时,将容器与项目关联:
drop: function(event,ui){
ui.draggable.addClass( 'dropped' ); // taken from your code & I used to change color
ui.draggable.data('droppedin',$(this)); // associate the container
$(this).droppable('disable'); // disable the droppable
}
Run Code Online (Sandbox Code Playgroud)
然后再次拖动时,取消关联并重新启用:
drag: function(event,ui){
if($(this).data('droppedin')){
$(this).data('droppedin').droppable('enable'); v// re-enable
$(this).data('droppedin',null); // de-associate
$(this).removeClass( 'dropped' ) // remove class
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7938 次 |
| 最近记录: |