jQuery ui.draggable - изменение текущего перетаскиваемого объекта (в fullCalendar) - PullRequest
0 голосов
/ 17 декабря 2009

Я только что обнаружил плагин fullCalendar jQuery, который делает практически все, что мне нужно для службы планирования встреч, которую я создаю. Однако я столкнулся с небольшой проблемой.

В представлении повестки дня fullCalendar есть элементы «события», которые можно перетаскивать, однако они привязаны к количеству доступных временных интервалов. Я хочу сохранить привязку к временным интервалам, но также сделать возможным перетаскивание события полностью за пределы календаря (это требование поведения из более старой версии системы).

Моя идея состояла в том, чтобы сделать клон объекта для события mouseout для календарной таблицы; это работает, но затем пользователь должен щелкнуть и перетащить клон отдельно от исходного объекта, а не перетаскивать клон.

Мне нужно передать статус «Меня перетаскивают» клону, как только пользователь пытается перетащить элемент «событие» за пределы таблицы. Это как-то возможно? Возможно, я мог бы использовать более простое решение?

Вот мой код, который выполняет клонирование. eventDragStart - это «инициируемое действие», вызываемое, когда пользователь начинает перетаскивать событие о (http://arshaw.com/fullcalendar/docs/triggered-actions.php),, в котором $ (this) установлено для элемента события, событие - это calEvent (фактический элемент данных - здесь не имеет значения) ), js - это событие javascript (где я получаю координаты), пользовательский интерфейс - это ссылка на объект пользовательского интерфейса. ".fc" - календарь, "#display_box" - родительский элемент, содержащий эту часть интерфейса. (Кстати, позиционирование пока не работает, но сейчас это второстепенный приоритет).

...
eventDragStart: function (event, js, ui) $\{   
var eventElement = $(this);
 $(".fc").mouseout(function () {
  eventElement.clone().css({'z-index':99999, top:js.clientY, right:js.clientX).appendTo("#display_box").draggable({helper: 'original'}); 
  $(".fc").unbind("mouseout");
 });
},
....

Надеюсь, это понятно всем, кто не использовал fullCalendar. Я бы очень признателен за любую помощь, и извините, что так долго.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2009

Если кому-то интересно решение, которое я использовал, я написал свою мини-функцию перетаскивания - я просто клонировал объект во время события перетаскивания, если пользователь вышел за пределы таблицы календаря, и вручную обновил клон css top / оставленные значения, пока событие перетаскивания не закончилось. Это означает, что исходный объект по-прежнему перетаскивается вверх и вниз по таблице, что не совсем идеально, но это лучшее решение, которое я мог бы предложить, обеспечивающее функциональность, которую хочет клиент.

0 голосов
/ 17 декабря 2009

Ну, я думаю, вы захотите использовать eventElement.clone(true), передавая это логическое значение true в качестве аргумента, чтобы клонировать все прикрепленные события / обработчики для элемента, тогда как непередача только клонирует элемент купола, завернутый в jQ.

...