Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как мне переложить это на jQuery? (https://javascript.ru/forum/jquery/11792-kak-mne-perelozhit-ehto-na-jquery.html)

сiparis 13.09.2010 21:45

Как мне переложить это на jQuery?
 
Здраствуйте,
Прошу помочь мне разобраться с событиями.
Есть к примеру код, в сумме, который выполняет перетаскивание елемента.
Суть в том, что я немогу понять как мне переложить это на jQuery.

var x = 0, drag = 0, elem = document.getElementById('move');

elem.onmousedown = function(event){
   event = event || window.event;
   x = event.clientX+document.body.scrollLeft-parseInt(elem.style.left);
   drag=true;
}
elem.ondragstart = function() {
   return false;
}

document.onmouseup = function() {
   drag = false;
}
document.onmousemove = function(event) {
   event = event || window.event;
   if(drag){
      elem.style.left=event.clientX+document.body.scrollLeft-x;
   }
}



Попробвал преобразовать, но почему-то безуспешно

var x = 0, drag = 0, elem = $('#move');
elem.mousedown(function(event){
   x = event.clientX+document.body.scrollLeft-parseInt(elem.style.left);
   drag=true;
});

elem.dragstart(function(event){
   return false;
});

document.mouseup(function(event){
   drag = false;
});

document.mousemove(function(event){
   if(drag){
      elem.style.left = event.clientX+document.body.scrollLeft-x;
   }
});


Объясните на каком этапе я допустил ошибку?


Неужели, чтобы сделать простой drag & drop из 10 строчек, нужно подключать UI.

inGray 13.09.2010 21:48

Можно нескромный вопрос? А зачем?

сiparis 13.09.2010 21:52

Ну какбы хочу понять/разобраться почему чтобы сделать элементарный drag & drop на jQuery нужно подключить тонну кода UI, а не сделать это просто как на чистом JavaScript.

Реально не понимаю почему не работает вышеприведенный код, буду раз если разьясните

inGray 13.09.2010 22:36

Не до конца jQuery используете.. Не понимаю зачем вообще на jQuery переписывать, если он и так минимален? Меньше он не станет...

ЗЫ У Объекта Document нет методов mouseup, mousemove... Ну и фаербаг вам в помощь.

сiparis 13.09.2010 22:47

Рабочий пример:

<script type="text/javascript">
window.onload = function() {
   var x = 0, drag = 0, elem = document.getElementById('move');

   elem.onmousedown = function(event){
      event = event || window.event;
      x = event.clientX+document.body.scrollLeft-parseInt(elem.style.left);
      drag = true;
   };

   elem.ondragstart = function() {
      return false;
   };

   document.onmouseup = function() {
      drag = false;
   };

   document.onmousemove = function(event) {
   event = event || window.event;
      if(drag){
      elem.style.left = event.clientX+document.body.scrollLeft-x + "px";
      }
   };
};
</script>
<img src="http://www.linkexchanger.su/forum/download/file.php?avatar=2_1263474815.jpg" style="position:absolute; top:100; left:100;" id="move" />


Мне ради интереса, хочется знать почему не получается перевести вышепредставленный код на jQuery.

PS: Document c обработчиками событий дружит прекрасно и firebag, это не считает за ошибку

inGray 13.09.2010 22:49

Метод onmousemove есть, а mousemove?

сiparis 13.09.2010 23:01

Цитата:

Сообщение от inGray (Сообщение 70746)
Метод onmousemove есть, а mousemove?

в каком смысле? jQuery mousemove()

сiparis 13.09.2010 23:19

Вроде бы разобрался


Часовой пояс GMT +3, время: 05:36.