将事件传递给兄弟html元素

时间:2015-01-10 16:47:00

标签: javascript jquery three.js

我创建了一个带有three.js的应用程序,有2个渲染器(1个画布和1个div(css渲染器))。 css渲染器位于画布的顶部,我想将任何类型的事件传递给后面的canvas元素。到目前为止,我没有创建调度员......

到目前为止我尝试过:

1)

// on top element css renderer 
$(this.cssRenderer.domElement).on("click mousedown mouseup mousemove focus blur keydown keyup change touchstart touchend touchmove", function ( event ) {

    event.preventDefault();
    event.stopImmediatePropagation();
    //canvas background domelement
    $(that.renderer.domElement).trigger(event);

});

2)

$(this.cssRenderer.domElement).on("click mousedown mouseup mousemove focus blur keydown keyup change touchstart touchend touchmove", function ( event ) {

    event.preventDefault();
    event.stopImmediatePropagation();

    that.renderer.domElement.dispatchEvent(event.originalEvent);

});

在案例2中,我收到以下错误:

  

未捕获的InvalidStateError:无法执行'dispatchEvent'   'EventTarget':事件已经发送。

我还尝试复制对象或在一段时间后传递它但是似乎没有任何效果。 我没有做过类似的事情,所以我想要一些帮助或指导。

1 个答案:

答案 0 :(得分:0)

您不能将event传递给触发器函数,因为event是一个对象,触发器需要一个字符串作为参数。

相反,请尝试传递event.type

$(that.renderer.domElement).trigger(event.type);

Read up here

JSFiddle(或with mouse coordinates

要传递鼠标坐标,我传递一个对象(鼠标)以及事件类型。