2013-03-04 18 views
9

Jest to prawdopodobnie bardzo łatwe do zrobienia, ale zawsze uważam za zbyt skomplikowane.JQuery-UI przeciągalne reset do oryginalnego pos.?

Właśnie ustawiłem prosty test z #draggable/#droppable o stałej szerokości/wysokości + float: left.

Następnie chcę, aby przycisk resetowania mógł zresetować #draggable do jego oryginalnego stanu po tym, jak został przyciągnięty do #potpable. (dolna linia)

$(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 */ 
}); 

Odpowiedz

7

Elementy, które można przeciągnąć, nie śledzą ich pierwotnej pozycji, o której wiem; tylko podczas przeciągania i do ponownego przyciągnięcia. Można po prostu zrobić to na własną rękę, choć:

$("#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

Wydaje się być tym, czego potrzebuję. Jednak po dodaniu \t $ ("# przeciągalne"). Dane ({'originalLeft': $ ("# przeciągalne"). Css ("left"), "origionalTop": $ ("# przeciągalne"). Css ('top') }); Przeciąganie przestaje działać – user2110966

+0

@ user2110966 Myślę, że Twój komentarz jest niekompletny? –

+0

Edytowałem, przepraszam za to. "Funkcja przeciągania przestaje działać". Próbowałem nawet po prostu skopiować/wkleić całą rzecz. To dziwne, ponieważ wyraźnie działa na demo. – user2110966

16

użyłem tego w projekcie

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

wystarczyły mi

+0

Użyłem kombinacji tego i otrzymania oryginalnych współrzędnych z drugiej odpowiedzi zamiast przywracania jej wartości 0,0. – BFWebAdmin

+0

to jest doskonałe, ponieważ żadna pozycja absolutna nie wygląda tak naprawdę! – chrispepper1989

+0

wow to jest gładka af :) –

2

Właśnie miałem wielki sukces z następującymi:

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

Użyłem podstawowego pomysłu h0dges. Utworzone przeze mnie kulki powróciły na swoje pierwotne pozycje, ale straciłem style, które sprawiły, że stały się kulkami. Dlatego zachowałem style kulek i po prostu zresetowałem ich styl górny i lewy, aby przywrócić oryginalne pozycje:

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