J'ai créé un jeu de glisser-déposer pour commencer à m'enseigner jquery. Tout semble fonctionner mais vous pouvez déposer plus d'un objet sur le même carré. Je veux désactiver droppable si l'espace réservé contient une image.Désactiver drop si div a déjà été supprimé?
J'ai regardé dans:
`greedy: true`
qui désactive la chute mais je ne suis pas sûr comment l'activer à nouveau et aussi:
$(this).droppable('disable');
Je peux obtenir ces deux pour désactiver la Laisser tomber, mais je ne sais pas comment je les obtenir pour l'activer à nouveau si le bloc/image revient à sa position d'origine ou est déplacé vers un autre carré.
Version complète: http://creativelabel.co.uk/drag-and-drop/
MISE À JOUR: Voici le code pour les machines à sous largables.
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
});
C'est drop:
code d'événement:
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);
}
}
Le code 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);
}
}
Eh bien, car vous n'avez pas posté n'importe quel code (Et non, je ne passe pas en revue votre base de code entière dans votre lien) il est un peu difficile de commenter où placer ceci dans votre code. Essayez d'affiner où vous * pensez * vous devriez activer le 'droppable' et mettre à jour votre question avec les sections de code pertinentes – Jamiec
Ok J'ai mis à jour ma question quant à l'endroit où je pense que l'activation devrait aller. Le code d'activation prend un hors du score si l'utilisateur traîne un carré sur un autre alors pour moi cela semble être un endroit logique pour mettre le code d'activation? – ShambalaG
Et avez-vous essayé cela? Qu'est-il arrivé? – Jamiec