2009-08-20 4 views
0

Я разрабатывал инструмент панорамирования изображения, и после того, как добрый член направил меня к перетаскиваемому плагину для jQuery, у меня есть большая часть его завершена. Прямо сейчас, если пользователь перетаскивает изображение (содержится внутри div размером около 300 пикселей на 300 пикселей), изображение сначала мерцает, а затем панорамируется. Кажется, что эти проблемы происходят после события мыши вниз, на событии перемещения мыши. Изображение сдвинется в один из четырех углов движения мыши, и перемещение в определенные области вызовет другой сдвиг. Я не смог найти ничего через Google, и я относительно новичок в jQuery.jQuery Draggable: Изображение Flicker

Я загрузил код здесь, в случае, если мое описание слишком расплывчато: http://www.studentgroups.ucla.edu/csa/test/zoom.htm

Любые идеи или советы с благодарностью!

ответ

1

Во-первых, вы сделали изображение перетаскиваемым как через плагин jQuery, так и свой собственный код. Ваш код меняет background-positiondiv, а плагин jQuery изменяет фактическое положение div. Это обязательно вызовет некоторые проблемы.

Кроме того, параметр Draggable containment, как представляется, предназначен для перетаскиваемых элементов, которые меньше, чем их родительский контейнер, а не те, кто больше, как вы пытаетесь сделать.

В любом случае, вот рабочий код:

$(document).ready(function() { 
    $(".draggable").draggable().bind('dragstop', function(e, ui) { 
     if (ui.position.top > 0) { 
      $(this).css('top', 0); 
     } 
     if (ui.position.left > 0) { 
      $(this).css('left', 0); 
     } 

     var bottom = -($(this).height() - $(this).parent().height()), 
     right = -($(this).width() - $(this).parent().width()); 

     if (ui.position.top < bottom) { 
      $(this).css('top', bottom); 
     } 
     if (ui.position.left < right) { 
      $(this).css('left', right); 
     } 
    }); 
}); 

Если вам не нужны реберные щелчки, вы можете избавиться от функции .bind(), а просто позвонить .draggable().

$(document).ready(function() { 
    $(".draggable").draggable(); 
}); 
+0

Ничего себе, я не могу поверить, что я не понимал, что -_- Я пишу это с нуля вчера, пока кто-то указал, что я мог бы просто использовать перетаскиваемую плагин. Думаю, я забыл удалить свой код, FML Большое вам спасибо за помощь! Однако у меня есть еще один вопрос; к чему относится «ui»? – 2009-08-20 22:08:19

+0

Без проблем :). 'ui' похоже на объект события (' e'), но содержит jQuery UI-специфический материал. См. Http://docs.jquery.com/UI/Draggable – nanotech