Jquery перетаскиваемое ограничение с использованием функции перетаскивания - PullRequest
1 голос
/ 29 августа 2011

Мне нужно использовать jQuery dragggable в довольно сложной геометрической форме, и невозможно предварительно рассчитать кадр.

Таким образом, опция сдерживания не решена для решения этой проблемы.

Я думал о функции перетаскивания, проверяя свое состояние и возвращая false, чтобы предотвратить перетаскивание. Но проблема в том, что после возврата false из функции перетаскивания процесс перетаскивания останавливается, как если бы пользователь отпустил кнопку мыши.

Какие-либо предложения по предотвращению перетаскивания фигуры без отмены процесса перетаскивания?

Ответы [ 2 ]

2 голосов
/ 21 апреля 2013

Основной трюк - установить положение вспомогательного объекта пользовательского интерфейса в функции события перетаскивания.

Пример

Здесь я предполагаю, что у вас есть функция для расчета предела Y ​​на основе позиции X.

$(x).draggable({
    drag: function (e, ui) {
        ui.position.top = limitY(ui.position.left);
    }
});

Вот jsFiddle , который я создал, пытаясь решить подобную проблему самостоятельно.

1 голос
/ 29 августа 2011

Я решил похожую проблему с изменяемым размером.Я должен был вручную установить размеры, хотя.Попробуйте что-то вроде этого:

yourdraggable.bind( 'drag', function() {

  var left = $(this).css('left'),
      top = $(this).css('top'),
      width = $(this).width(), 
      height= $(this).height();

  //determine if dragging should contain or continue

  //if contain 
  $(this).css( { left: containLeft, top: containTop } );

});

Вы можете анализировать левый и верхний по отдельности, но у вас есть идея

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