jQuery UI - Dropable akzeptiert nur einen ziehbaren

8

Ich mache eine App, die ein Dropable div und ein paar ziehbare div s verwendet. Wie kann ich festlegen, dass nicht mehr als eine ziehbare div akzeptiert wird? Ich habe gegoogelt, aber keine Abhilfe gefunden.

Eine Workaround kam mir in den Sinn. Wie kann ich überprüfen, gibt es Drop-Element in diesem Droppable div? Wenn es ausgelastet ist, dann ziehe dieses ziehbare Objekt zurück, das versucht wird, fallen gelassen zu werden

    
Emil Avramov 16.10.2010, 10:10
quelle

9 Antworten

25

OK hat eine gute Lösung dafür gefunden, im Wesentlichen auf "Drop". Ich habe das Droppable so eingestellt, dass es nur das Objekt akzeptiert, das hineingezogen wurde.

Wenn Sie 'disable' deaktivieren, ist das 'out' Event, das Sie neu initialisieren müssen, nicht mehr verfügbar. Stattdessen habe ich nur die auswählbaren Elemente umgestellt.

Dann ist es für mich möglich, das OUT-Ereignis zu verwenden, um alle ziehbaren Elemente erneut zu akzeptieren, und da nichts anderes akzeptiert wird, wird der OUT nicht durch andere ziehbare Elemente ausgelöst:

%Vor%     
Likwid_T 14.12.2011 17:26
quelle
5

Sie können das .droppable() Widget nach dem ersten drop wie folgt löschen:

%Vor%

Sie können hier eine Demo ausprobieren .

    
Nick Craver 16.10.2010 10:15
quelle
3

Einfacher Peasey. Aktivieren Sie einfach alle .drop-Zonen, wenn Sie über ihnen schweben, und überprüfen Sie dann, ob die aktuell schwebende .drop-Zone ein ziehbares Element enthält

%Vor%     
Catfish 21.01.2014 02:34
quelle
2

Diese Lösung löst einen großen Fehler in der Antwort von Likwid_T.

%Vor%     
Harrison Powers 05.03.2014 23:00
quelle
1

Wie wäre es damit:

%Vor%

Auf diese Weise gibt die accept-Funktion nur dann true zurück, wenn noch keine Elemente gelöscht wurden.

    
Stefano Luoni 25.07.2013 16:15
quelle
1

Ich verbringe viele Stunden damit, es herauszufinden, und schließlich funktioniert es für mich so:

%Vor%     
Than Ngo Hoai 29.09.2016 15:11
quelle
0

Um es zu aktivieren, verwenden Sie die Option: $(".selector").droppable({ disabled: **false** });

    
Sergey 09.12.2011 16:12
quelle
0

Sie können es auch andersherum tun, indem Sie das ziehbare Objekt zurücksetzen, wenn das droppable eine bestimmte Klasse oder ein bestimmtes Attribut aufweist (aufbauend auf diesem Beispiel: Ссылка ).

Verwenden Sie zum Beispiel das Attribut rel (Sie könnten auch class oder etwas anderes verwenden) für das Droppable:

%Vor%

Und der ziehbare:

%Vor%     
kasimir 18.09.2013 13:08
quelle
0

Meine Lösung ähnelt der von Likwid_T, außer dass sie das Dropable drop -Ereignis verwendet sowie die Verbindungen zwischen Draggables und Droppables statt des% code_de% -Ereignisses von dropable beibehält. Ich denke, das Problem bei der Verwendung von out ist, dass es ausgelöst wird, selbst wenn ein ziehbares Objekt über ein bereits "vollständiges" Objekt gezogen und dann "out" wird.

%Vor%

Ein zugehöriges Feature ist, dass man ein Element über ein Droppable zieht, das bereits ziehbar ist, das alte wird ersetzt und auf seine ursprüngliche Position zurückgesetzt. So mache ich es:

%Vor%     
hagabaka 12.08.2016 15:35
quelle

Tags und Links