Я стучал головой о стену в течение нескольких дней и никуда не дену, поэтому просто хочу найти какое-то подтверждение того, что то, что я пытаюсь сделать, на самом деле действительно. ...JQuery & SVG drag and drop
У меня есть страница с SVG witin DIV. Я хочу иметь возможность щелкнуть компонент SVG и перетащить его. Простой в теории. У меня было это в грязной исходной версии javascript, но я пытаюсь сделать это в JQuery для обеспечения последовательности.
Я имел следующий, которым тащит весь контейнер DIV вокруг:
* вар 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+")");
});
});
});
*
Я изменил это это это, что я думал получить элемент SVG по его ID, но это не делает ничего. Это похоже на то, что 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);
});
});
});
*
Может кто-нибудь увидеть что-нибудь вопиюще очевидным, что нуждается в изменении, это может быть сделано, или это просто совершенно неправильно?
Не так много элементов svg имеют атрибуты «x» и «y», вам может быть повезло с атрибутом «transform». –