次のようにjQueryでSVGタグを作成することは可能ですか:
var dragSVG = $('<svg xmlns="http://www.w3.org/2000/svg"></svg>');
dragSVG.append('<rect x="0" y="0" width="20" height="20" style="fill:red"></rect>');
もしそうなら、どのようにして DOM にアクセスできるのでしょうか? すなわち。HTML の場合は、次のようにします。
return dragSVG.html();
しかし、HTML ではないため、これは例外をスローします... または、完全に基本的なものが欠けています!?
編集:
私が達成しようとしていることをもう少し明確に説明しようと思います。メインの SVG キャンバスにドラッグできる SVG の「アイテム」を表すボタンがあります。ユーザーがドラッグを開始すると、マウスの下に SVG の「アイテム」を表示して、ユーザー フィードバックを提供したいと考えています。ユーザーがこれをキャンバスにドロップしたら、「アイテム」をメイン キャンバスに移動する必要があります。
$('#testBtnDrag').draggable({
opacity: 0.7,
revert: 'invalid',
cursorAt: { top: 0, left: 0},
helper: function (event) {
var dragSVG = '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"><rect x="0" y="0" width="20" height="20" style="fill:red"></rect></svg>';
return dragSVG;
}
});
// I can't attach the droppable to the SVG tag directly, IE / FF don't work with this
// so we have to attach it to a <div> tag that wraps the <svg>.
$('#drawArea').droppable({
accept: '.svg-item',
drop: function (event, ui) {
// Get the mouse offset relative to the <svg> canvas
var posX = event.originalEvent.clientX - $(this).offset().left;
var posY = event.originalEvent.clientY - $(this).offset().top;
// Get the dragged element and put it onto the "main" canvas
var rawSVG = ui.helper.children().html() // This won't work!
var mainCanvas = $('#drawArea > svg');
mainCanvas.append(rawSVG);
}
});
});