2013-03-04 7 views
9

Das ist wahrscheinlich sehr einfach, aber ich denke immer zu kompliziert.JQuery-UI ziehbares Zurücksetzen auf Originalposition?

Ich habe gerade einen einfachen Test mit #draggable/#droppable mit einer festen Breite/Höhe + schweben ein: links.

Ich mag dann eine Reset-Taste der Lage sein, die #draggable zurückgesetzt, um es ursprünglicher Zustand ist, nachdem sie einen #droppable geschnappt worden sind. (unterste Zeile)

$(document).ready(function() { 

    $("#draggable").draggable 
    ({ 
     revert: 'invalid', 
     snap: '#droppable', 
     snapMode: 'corner', 
     snapTolerance: '22' 

    }); 
}); 

    $("#droppable").droppable 
    ({ 
     accept: '#draggable', 
     drop: function(event, ui) 
     { 
      $(this).find("#draggable").html(); 
     } 
}); 

    $(".reset").click(function() { 
    /* What do I put here to reset the #draggable to it's original position before the snap */ 
}); 

Antwort

7

Schleppbare Elemente verfolgen nicht ihre ursprüngliche Position, von der ich weiß; nur während des Ziehens und um zurückgeschnappt zu werden. Sie können dies nur tun, auf eigene Faust, aber:

$("#draggable").data({ 
    'originalLeft': $("#draggable").css('left'), 
    'origionalTop': $("#draggable").css('top') 
}); 

$(".reset").click(function() { 
    $("#draggable").css({ 
     'left': $("#draggable").data('originalLeft'), 
     'top': $("#draggable").data('origionalTop') 
    }); 
}); 

http://jsfiddle.net/ExplosionPIlls/wSLJC/

+0

scheint, was ich brauche. Allerdings, wenn ich hinzufügen \t $ ("# ziehbar") Daten ({ 'originalLeft'. $ ("# Ziehbar") css ('links'), 'origionalTop':.. $ ("# Ziehbar") css ('top') }); Die ziehbar Anschläge – user2110966

+0

@ user2110966 Arbeit denke ich Ihren Kommentar unvollständig ist? –

+0

Ich habe es bearbeitet, tut mir leid. "Das Ziehbare hört auf zu arbeiten". Ich habe sogar versucht, nur das gesamte Ding zu kopieren/einfügen. Das ist komisch, da es eindeutig auf der Demo funktioniert. – user2110966

16

ich verwendet, um dieses an einem Projekt

$("#reset").click(function() { 
    $(".draggable-item").animate({ 
     top: "0px", 
     left: "0px" 
    }); 
}); 

den Trick für mich getan hat

+0

Ich habe eine Kombination davon verwendet und die ursprünglichen Koordinaten von der anderen Antwort erhalten, anstatt sie auf 0,0 zurückzusetzen. – BFWebAdmin

+0

das ist hervorragend für keine absoluten positionen sieht echt nett aus! – chrispepper1989

+0

wow das ist glatt af :) –

2

Ich habe gerade hatte großer Erfolg mit dem folgenden:

$(".draggable-item").removeAttr("style"); 
1

Ich benutzte die Grundidee von h0dges. Die Bälle, die ich kreierte, kehrten zu ihren ursprünglichen Positionen zurück, aber ich verlor die Stile, aus denen sie zu Bällen wurden. Daher behielt ich die Stile der Kugeln und nur ihre oberen und linken Stile, um sie in ihre ursprünglichen Positionen zurück:

function endRound() { 
    $(".ball").css({"top":"", "left":""}); 
}