JQuery перетаскиваемые параметры - PullRequest
11 голосов
/ 25 июня 2009

Я хочу, чтобы перетаскиваемый объект возвращался в исходное положение, когда я нажимал кнопку. Я использовал опцию «уничтожить», но она не работает. он отключает перетаскивание, но не возвращает обратно в исходное положение.

может кто-нибудь помочь?

Редактировать часть:

$('#Zoom').toggle(function() {
                $("#draggable").draggable({});},
            function() {
                $("#draggable").draggable('destroy');});

это кнопка переключения, которую я использую для включения перетаскивания. опция уничтожения только отключает перетаскивание и не возвращает объект обратно в исходное положение.

также это кнопка, которую я хочу вернуть объекту в исходное положение:

nextImg.addEventListener('click', function() {img.setAttribute("src", "img"+(++imgnum)+".jpg");}, false);

Ответы [ 6 ]

10 голосов
/ 25 июня 2009

Как насчет этого?

<script type="text/javascript">
jQuery(document).ready(function() { 
    $("#draggable").data("Left", $("#draggable").position().left)
                    .data("Top", $("#draggable").position().top);
    $("#draggable").draggable();

    $("#nextImg").bind('click', function() {
        $("#draggable").animate(
            { "left": $("#draggable").data("Left"), 
                "top": $("#draggable").data("Top")
            }, "slow");
        $("#draggable").attr("src", "img"+(++imgnum)+".jpg");
    });
});
</script>

Я сделал несколько предположений, таких как объект nextImg, имеющий идентификатор «nextImg», чтобы я мог связать событие click с помощью jQuery (еще один шаг в процессе привязки события javascript?) Я также предполагаю, что Вы действительно не хотите разрушать функцию перетаскивания.

4 голосов
/ 25 июня 2009

Возврат выполняется, когда перетаскивание остановлено (с необязательной задержкой), а не при нажатии.

$(document).ready(function() {
   var originalTop = $('#draggable').position().top;
   var originalLeft = $('#draggable').position().left;

   $('#Zoom').toggle(
         function() {
            $("#draggable").draggable({});},
         function() {
            $("#draggable").draggable('destroy');
            $('#draggable').position().top = originalTop;
            $('#draggable').position().left= originalLeft;
         });
});
2 голосов
/ 25 июня 2009

РЕДАКТИРОВАТЬ: Я почти уверен, что это добьется цели:

//reposition the draggable after it has finished
$(".selector").draggable({  
    stop: function(e,ui) { 
        ui.instance.element.css("left","0px"); 
        ui.instance.element.css("top","0px"); 
    } 
});
0 голосов
/ 20 января 2012
function revertable($drag){     
    $drag.data({ top: $drag.css('top'), left: $drag.css('left') })  
    $('.'+$drag.attr('id')+'.revert').data({ revert: '#'+$drag.attr('id') })
        .on('click',function(){
            var $rev = $( $(this).data('revert') );
            $rev.css({ top: $rev.data('top'), left: $rev.data('left') });
    })
}

// просто вызываем функцию в событии создания

var $drag = $('#my_draggable'); //your element
$drag.draggable({
    create: revertable($drag)
});

// проверить это: изменить верхние / левые значения, обновить, нажать кнопку, чтобы увидеть, как это работает.

<div id="my_draggable" style="position:absolute;top:100px;left:100px">
    Drag Me Around
</div>

<button class="my_draggable revert">Revert My Draggable</button>

... проверено, должно работать на любом элементе (требуется jquery 1.7 для функции .on ())

0 голосов
/ 25 июня 2009

По умолчанию для параметра Revert установлено значение false, для него необходимо установить значение true.

$("#draggable").draggable({ 
    revert: true
});

это должно сделать это на самом деле ...

0 голосов
/ 25 июня 2009

Вернется ли вам помочь?

http://docs.jquery.com/UI/Draggable#option-revert

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...