para_noid
hirnrissig
Tach auch,
Folgendes: ich verwende jQuery-UI für ein kleines Item-Slot-System.
Angenommen, ich habe zehn leere Slots und drei Items, die ich je nach Laune innerhalb der Slots herumschieben kann.
Jetzt möchte ich verhindern, dass ich in einen Slot mehr als ein Item legen kann, und ich weiß nicht, wie. Mit dem geposteten Code kann ich alle drei Items übereinander in einen Slot legen.
Ich kann zwar den verwendeten Slot für weitere Ablagen deaktivieren:
aber finde keine Möglichkeit, ihn zu reaktivieren, wenn er wieder frei ist. Ein einmal benutzter Slot wird danach unbrauchbar. Wohin also mit einem
?
Ich bräuchte eine Art gedropptes-Item-wurde-soeben-von-mir-entfernt-Event für die Slots.
Jemand eine Idee?
Folgendes: ich verwende jQuery-UI für ein kleines Item-Slot-System.
Angenommen, ich habe zehn leere Slots und drei Items, die ich je nach Laune innerhalb der Slots herumschieben kann.
HTML:
<div class="slot ui-droppable">
<div class="item yellowPo ui-draggable" style="position: relative;"></div>
</div>
<div class="slot ui-droppable">
<div class="item bluePo ui-draggable" style="position: relative;"></div>
</div>
<div class="slot ui-droppable">
<div class="item greenPo ui-draggable" style="position: relative;"></div>
</div>
<div class="slot ui-droppable"></div>
<div class="slot ui-droppable"></div>
<div class="slot ui-droppable"></div>
<div class="slot ui-droppable"></div>
<div class="slot ui-droppable"></div>
<div class="slot ui-droppable"></div>
<div class="slot ui-droppable"></div>
Code:
function initInventory() {
$('.item').draggable({
cursor: 'move',
containment: 'document',
revert: 'invalid',
stack: '.item'
});
$('.slot').droppable({
accept: '.item',
hoverClass: 'hovered',
drop: handleDropEvent
});
}
function handleDropEvent(event, ui) {
var draggable = ui.draggable;
if($(draggable).hasClass("item")){
draggable.position({of: $(this), at: 'center center'});
}
}
Jetzt möchte ich verhindern, dass ich in einen Slot mehr als ein Item legen kann, und ich weiß nicht, wie. Mit dem geposteten Code kann ich alle drei Items übereinander in einen Slot legen.
Ich kann zwar den verwendeten Slot für weitere Ablagen deaktivieren:
Code:
function handleDropEvent(event, ui) {
var draggable = ui.draggable;
if($(draggable).hasClass("item")){
draggable.position({of: $(this), at: 'center center'});
$(this).droppable({disabled: true});
}
}
aber finde keine Möglichkeit, ihn zu reaktivieren, wenn er wieder frei ist. Ein einmal benutzter Slot wird danach unbrauchbar. Wohin also mit einem
Code:
$(this).droppable({disabled: false});
Ich bräuchte eine Art gedropptes-Item-wurde-soeben-von-mir-entfernt-Event für die Slots.
Jemand eine Idee?