Изменение jQuery draggable helper во время перетаскивания


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

У меня в голове было две идеи:

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

  2. В случае перетаскивания измените помощника. Это звучит как лучший вариант. Проблема в том, что Я не нахожу, как изменить помощника на определенный элемент DOM (только допустимые значения - "клон", "оригинал" и функция.

Я что-то упускаю или это невозможно ?

2 3

2 ответа:

Вы можете получить доступ к помощнику в событии перетаскивания:

$('#list').draggable({helper:'clone'});

$("#list").bind("drag", function(event, ui) {
    ui.helper.css("background-color", "red");
});

Параметр UI ссылается на перетаскиваемый элемент. пользовательский интерфейс.helper-это экземпляр текущего помощника, который может быть изменен на лету.

В моем случае перетаскиваемый был символом из Adobe Edge, поэтому мне пришлось создать класс для одного из "слоев", которые я мог затем изменить при перетаскивании. Поэтому, когда символ был создан, я сделал это;

drag.$("drag_label").addClass("dragLabel");

Это назначение класса клонировалось бы с помощником (в отличие от данных объекта), а затем внутри перетаскиваемого я мог бы сделать это;

start: function(event, ui) {
    $(ui.helper).find(".dragLabel").css("color", "#FF0000");
    ...
},