Можно ли переместить перетаскиваемый элемент jquery с помощью функции щелчка, и можно ли его распознать с помощью функции dropppable? - PullRequest
1 голос
/ 21 июня 2011

У меня есть перетаскиваемый элемент, содержащий прозрачный png, чтобы замаскировать другие изображения, которые помещаются в сбрасываемые элементы. Сейчас я ищу другой способ переместить перетаскиваемый элемент рядом с перетаскиванием его мышью.

Я добавил стрелки вверх / вниз и привязал к ним функцию щелчка, которая анимировала перетаскиваемый элемент к следующему возможному элементу сброса - анимация работает нормально, но элемент сброса не распознает перетаскиваемый элемент, а мои функции переворачивания и удаления работа :(

как мне заставить элемент droppable распознавать мой перетаскиваемый элемент, когда он не перетаскивается, а перемещается функцией щелчка?

-> проверьте это здесь: http://www.ifm -service.com / test /

при появлении перетаскиваемого маскированного изображения - при перемещении по ссылкам ничего не происходит!

Ответы [ 2 ]

0 голосов
/ 21 июня 2011

Из того, что я вижу, проблема в том, что когда вы устанавливаете обработчики для функции щелчка на move up и move down, вы должны указать, чтобы скрыть изображение и вызвать новое изображение на основе текущей позиции маска.

Вы можете определить отдельные функции, которые будут обрабатывать снова и снова.

и связать одну и ту же функцию с обработчиками нажатий и перетаскиванием. Для отслеживания текущей позиции div есть переменная, которая сообщает текущую позицию, скажем

var position = 0;

function onOUT(direction){
   if(direction == "up")
     position--;
   else
     position++;
   //hide current image.
}
function onIN() {
   //display image at current position
}

Примечание: убедитесь, что функции onOUT и onIN не зависят от места, откуда они вызваны. ( ИЛИ ЖЕ ) . this внутри функции не должно определять положение или перемещение элемента. Если он решит, то выдаст ошибку, поскольку this указывает на разные объекты при перетаскивании и использовании отдельных кнопок.

0 голосов
/ 21 июня 2011

вижу 2 варианта. Вы можете определить свои функции over и out как отдельные функции:

function overFunc){...}
function outFunc){...}

$(".droparea").droppable({  
   out: outFunc,
   over: overFunc
});

Тогда вы можете просто вызывать эти функции независимо, когда это необходимо.

Другой вариант - вызывать сбрасываемые функции следующим образом (не проверено, но я считаю, что это их синтаксис):

$("#droppable").droppable('option', 'out')()

Это зависит от вашей ситуации, но у вас могут возникнуть проблемы с контекстом в любом случае. У первого, очевидно, вообще нет контекста, поэтому вы захотите вызвать его с .apply, чтобы использовать this. 2-й может иметь возможность использовать this, чтобы получить предмет сбрасывания, но, очевидно, не имеет доступа к тому, что отбрасывается, если есть несколько предметов сброса.

...