1

我一直在修改 Google Closure 库中的拖放操作:http: //closure-library.googlecode.com/svn/docs/class_goog_fx_DragDropGroup.html

我想知道当“dragstart”事件被触发时如何隐藏克隆的源元素(跟随光标)。这是我当前的 dragstart 事件回调函数。我确信它在正确的时间被调用。但是,它无法隐藏克隆的元素。

/**
 * Called when drag starts.
 * @param {Event} e The event signaling the start of drag.
 * @private
 */
Foo.prototype.dragStart_ = 
    function(e) {
  goog.style.setOpacity(e.dragSourceItem.element, 0);
  goog.style.showElement(e.dragSourceItem.element, false);
}

如何隐藏跟随鼠标的克隆源元素?我也不介意隐藏实际的拖动源元素。

4

1 回答 1

1

dragstart如果您删除对 的调用,您的事件处理程序应该可以工作goog.style.showElement

/**
 * Called when drag starts.
 * @param {Event} e The event signaling the start of drag.
 * @private
 */
Foo.prototype.dragStart_ = function(e) {
  goog.style.setOpacity(e.dragSourceItem.element, 0.0);
};

请参阅拖放演示

在演示文件dragdrop.html中,dragStart(event)函数定义如下:

function dragStart(event) {
  goog.style.setOpacity(event.dragSourceItem.element, 0.5);
}

更改不透明度以0.0成功隐藏源元素和拖动元素。

要保持源元素可见并仅隐藏拖动元素,您可以覆盖goog.fx.AbstractDragDrop.prototype.createDragElement(sourceElement)并使用 CSS 设置拖动元素的不透明度。例如,在dragdrop.html演示中,button 1使用了一个自定义的拖动元素,样式为 CSS 类foo。下面的 CSS 隐藏了button 1拖动元素:

.foo {
  position: absolute;
  opacity: 0.0;
}
于 2012-08-04T22:03:54.967 回答