Возможно, вы уже нашли решение своей проблемы, но я подумал, что просто добавлю свои $ .02.
Я использовал собственный аватар для перетаскивания для каждого дескриптора перетаскивания (в обычном слове додзё «аватар» - это то, что отображается во время перетаскивания пользователя). Вот прямой фрагмент кода:
for ( var i=0; i<this.cellsTotal; ++i ) {
// Create the DND source
var source = new dojo.dnd.Source(
"drag-handle-container-" + i,
{copyOnly: true, creator: createAvatar}
);
// Add stuff to it
source.insertNodes(null, [{data: i, type: [this.dnd.classes.handle]}]);
}
createAvatar
- это обратный вызов функции, определенный ранее примерно так:
var createAvatar = function(item, mode) {
var node = dojo.doc.createElement("span");
node.id = dojo.dnd.getUniqueId();
node.itemIndex = parseInt(item.data);
dojo.addClass(node, "dojoDndItem");
// Creating the drag avatar or the source node?
if ( mode == "avatar" ) {
// Create the DOM for the avatar (what is shown while dragging)
} else {
// Create the DOM for the source node (the handle for drag initiation)
}
return {node: node, data: item, type: [context.dnd.classes.avatar]};
};
Ваш метод работает, очевидно, но этот метод освобождает вас от необходимости беспокоиться о переключении стилей, так как Dojo позаботится обо всем за вас.
с .: Я ненавижу Додзё ДНР и его документацию. Мне понадобилось много времени, чтобы понять, когда я должен был сделать это первоначально.