Я пытаюсь работать с Jquery и Svg вместе. Но я не хочу использовать любой плагин.
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что когда я пытаюсь работать в традиционном режиме добавления, чтобы добавить дочерний элемент в документ svg, объект не отображается. Давайте посмотрим, что я пытался сделать:
/* Creating the svg container using pure JS */
var container = document.getElementById("svg_space");
mySvg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
mySvg.setAttribute("version", "1.2");
mySvg.setAttribute("baseProfile", "tiny");
container.appendChild(mySvg);
/* Adding a child and setting attributes to the SVG container using pure JS */
Circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
Circle.setAttribute("cx", "60");
Circle.setAttribute("cy", "30");
Circle.setAttribute("r", "13");
Circle.setAttribute("class", "class1");
mySvg.appendChild(Circle); /* After this, the circle is rendered */
/* Then, I tried to use jQuery to perform the same action... */
$(mySvg).append("<circle />");
$(mySvg).find("circle").attr("cx","160");
$(mySvg).find("circle").attr("cy","70");
$(mySvg).find("circle").attr("r","30");
$(mySvg).find("circle").attr("class","class1" );
... но после этого действия круг не рендерится. Я проверял, был ли хотя бы круг действительно добавлен к дереву DOM в Инспекторе инструментов разработчика, и я обнаружил, что оба элемента существуют с ранее заданными надлежащими атрибутами, но круг, созданный с помощью jQuery, выглядит так, как если бы он был потомком html. не как svg потомок. Это означает, что конструкторы, прототипы и другие методы, относящиеся к элементу круга svg, не были частью этого круга jquery, а вместо этого относились к чистому тегу html.
Есть ли способ создания элементов svg как потомков svg с использованием jquery, или лучше использовать чистый javascript, несмотря на потерю производительности?