几天来一直把头撞在墙上,一无所获,所以我只想找到某种确认,证明我正在尝试做的事情实际上是可行的......
我有一个带有 SVG 和 DIV 的页面。我希望能够单击 SVG 的一个组件并将其拖动。理论上真的很简单。我在一个凌乱的原始 javascript 版本中有这个,但我试图在 JQuery 中做到这一点以保持一致性。
我有以下内容,它拖着整个容器 DIV:
* var svgName = "/mySvg.svg";
$(document).ready(function($) {
$('#svgDiv').svg();
var svg = $('#svgDiv').svg('get');
svg.load(svgName,
function () {
$('#svgDiv').draggable().bind('mousedown', function(event, ui) {
$(event.target.parentElement).append( event.target );
}).bind('drag', function(event, ui) {
event.target.setAttribute("transform", "translate("+event.clientX+","+event.clientY+")");
});
});
});
*
我把它改成了这个,我认为它会通过它的 ID 获得 SVG 的一个元素,但这什么也没做。就好像 JQuery 看不到 DIV 的“内部”(想要一个更好的词)。*
var svgSource = "/mySvg.svg";
$(document).ready(function($) {
$('#svgDiv').svg();
var svgObj = $('#svgDiv').svg('get');
svgObj.load(svgSource,
function () {
var svgObj2 = $('#svgDiv').svg('get');
var svgElem = svgObj2.getElementById('pathIdOne');
$(svgElem).draggable().bind('mousedown', function(event, ui) {
$(event.target.parentElement).append( event.target );
}).bind('drag', function(event, ui) {
//event.target.setAttribute("transform", "translate("+event.clientX+","+event.clientY+")");
event.target.setAttribute('x', ui.position.left);
event.target.setAttribute('y', ui.position.top);
});
});
});
*
任何人都可以看到任何明显需要改变的东西,可以这样做,还是完全错误?