Javascript 可以拖动HTML dom元素&;放在SVG dom元素上?
我目前正在使用Raphaël JS(开放切换到jQuerySVG)和jQueryUI来尝试制作一个棋盘游戏的原型。这有点类似于风险,因为棋盘是一张地图,你可以(希望很快)将棋子从地图上的一个区域拖到另一个区域(比如从a到B),然后放到那里。一旦删除,它将触发回调以执行某些工作 现在我一直在尝试拖放功能。我想拖动一个html元素(div)并将其放到SVG元素上。我对SVG不是很熟悉,但据我所知,在让HTML和SVG DOM协同工作时有一些问题需要克服 我有两个版本,我正试图让jqueryui通过它们中的任何一个拖放到其中。一种是将jquerysvg与svgdom插件+jqueryui一起使用,另一种是Raphaël+jqueryui。他们两人似乎都没有发起坠落事件。据我所知,Raphaël版本不起作用,因为jQuery的dom操作无法与SVG dom交互 JS Fiddle jQuery SVG:(很抱歉,您必须向下滚动很远才能看到SVG元素) 其他可能的解决方案似乎是:Javascript 可以拖动HTML dom元素&;放在SVG dom元素上?,javascript,jquery,jquery-ui,svg,raphael,Javascript,Jquery,Jquery Ui,Svg,Raphael,我目前正在使用Raphaël JS(开放切换到jQuerySVG)和jQueryUI来尝试制作一个棋盘游戏的原型。这有点类似于风险,因为棋盘是一张地图,你可以(希望很快)将棋子从地图上的一个区域拖到另一个区域(比如从a到B),然后放到那里。一旦删除,它将触发回调以执行某些工作 现在我一直在尝试拖放功能。我想拖动一个html元素(div)并将其放到SVG元素上。我对SVG不是很熟悉,但据我所知,在让HTML和SVG DOM协同工作时有一些问题需要克服 我有两个版本,我正试图让jqueryui通过它
a)使用Raphaël及其内置的
拖动
和onDragOver
函数,尽管我使用了所有SVG,并且我尝试使用HTML dom来处理移动的片段,因为它们将是图像(带有背景图像的div)。此外,我可能必须自己实施drop。b)尝试使用HTML5拖放,尽管我不确定这是否可行。事实上,SVG很难操作;只要看看来源 或者,如果您决定放弃SVG,这里有一些其他想法
s,然后使用jqueryui移动它们李>
<table style = "width:600px; border:1 px solid black;">
<tr>
<td>
<div id="divDragable" class="ui-widget-content">
<p>Drag me around</p>
</div>
</td>
<td>
<div id="divDroppable">
</div>
</td>
</tr>
</table>
这是个老生常谈的问题,但无论如何我都会尝试回答它。我想出的解决方案是这样的:
您可以在这里看到一个示例(使用D3生成SVG):您找到问题的解决方案了吗?
$(function () {
//--- Draggable
$("#divDragable").draggable();
//-------------------- Code for Raphael---------------------
var paper = Raphael("divDroppable", 200, 200);
// Making SVG droppable
$("#divDroppable").droppable({
drop: function (event, ui) {
// get targeted SVG elemnet by
// event.originalEvent.target
}
});
var recatngleObj1 = paper.rect(10, 15, 50, 30, 2);
recatngleObj1.attr("id", "emptyRect");
recatngleObj1.dropShadow(2, 3, 3, 1);
recatngleObj1.attr("fill", "#B3E6FF");
});