2

我正在尝试将拖放功能合并到使用 Google Closure 库的应用程序中。具体来说,我正在使用goog.fx.DragDropGroup该类:

http://closure-library.googlecode.com/svn/docs/class_goog_fx_DragDropGroup.html

现在,我试图让光标旁边的元素成为拖动源以外的元素。我已经尝试在事件侦听器的回调函数中执行此操作dragstart

myapp.Foo.prototype.dragStart_ = 
    function(e) {
  var dElement = goog.dom.createElement('div');
  dElement.innerHTML = 'This element is not a copy of the drag source element.';
  e.dropTargetItem.element = dElement;
}

但是,直接更改element放置目标项的属性是行不通的。事实上,它在拖放时取消了拖动源元素的任何副本。

如何将另一个元素指定为使用鼠标拖动拖动源时出现的元素?我不希望这个元素与拖动源相同。

4

1 回答 1

0

您可以创建一个继承自 goog.fx.DragGroup 的拖动组类然后覆盖该函数: createDragElement 您返回的元素将是鼠标指针后面的元素。

例子:

goog.provide('my.DragGroup');

goog.require('goog.fx.DragDropGroup')

/**
 * @constructor
 * @extends {goog.fx.DragDropGroup}
 */
my.DragGroup = function() {
    goog.base(this);
};
goog.inherits(my.DragGroup, goog.fx.DragDropGroup); 

/** @inheritDoc */
my.DragGroup.prototype.createDragElement = function(sourceEl) {
    return goog.dom.createDom('div', null, 'Not a copy of the source El');
}

希望这可以帮助

于 2014-03-21T07:04:49.020 回答