jQuery ziehbare Wiederherstellung basierend auf der Bedingung

7

Ich habe ein Problem mit jQuery, das ziehbar und absetzbar ist. Hier ist eine Beschreibung was ich machen möchte.

Erstens: Ich habe zwei divs. Eins ist <div id="selected"> und ein anderes ist <div id="container"> . "container" hat 10 <li> , die ziehbar sind und in "selected" verschoben werden können. Hier ist Code:

%Vor%

Zweitens: Ich möchte alle 5 <li> s von "container" zu "selected" div zulassen. Wenn jemand versucht, 6. <li> hinzuzufügen, darf er dem Benutzer nicht erlauben. Das ist der 6. <li> , der in "selected" eingefügt wird, muss jedoch mithilfe von jQuery draggable option revert .

d. %Code% Hier ist JavaScript-Code dafür.

%Vor%

Das funktioniert gut.

Drittens: Aber wenn ich ein $("#container li").draggable({ revert: true }); von "selected" auf "container" ziehe, hat das "selected" div nur 4 <li> s. In dieser Situation sollte der Benutzer später in der Lage sein, ein weiteres <li> in das "ausgewählte" div von "container" div einzufügen. Aber leider funktioniert es nicht. Alle <li> s, die ich versuche, in "selected" zu ziehen, werden aufgrund von <li> condition zurückgesetzt.

Kann mir jemand helfen, das Problem mit der ziehbaren Rückzugsoption zu lösen? Bitte ...

    
gautamlakum 29.11.2010, 10:34
quelle

2 Antworten

17

Sie können die Option accept verwenden, die eine Funktion benötigt, um dies zu vereinfachen :

%Vor%

Sie können es hier testen . Wenn du Elemente wegziehst, geht der .length runter und er akzeptiert Elemente wieder ... kein Grund, komplizierter zu werden:)

    
Nick Craver 29.11.2010, 10:48
quelle
3

Wenn Sie revert auf false setzen, wird die Funktion zum Zurücksetzen vollständig deaktiviert. Wie Sie darauf hinweisen, können Sie die Ziehpunkte überall ablegen. Was du normalerweise willst, ist revert: 'invalid' , was bedeutet, dass es zurückgesetzt wird, wenn es auf etwas fällt, das kein Droppable ist, das es akzeptiert.

Was Sie tun möchten, sollte in etwa so aussehen:

%Vor%     
David Hedlund 29.11.2010 10:40
quelle