Is it possible to append a div inside an SVG element?

JavascriptJqueryHtmlSvg

Javascript Problem Overview


I am trying to append an HTML div inside an SVG, which I am trying to create a graph. I am trying to append it using the code below, but when I inspect element using Firebug, the div is shown inside rect element code, but it doesn't show up in the graph UI.

Is it something wrong with the method that I am trying or is it impossible to append a div inside an SVG?

    marker.append("rect")
   .attr("width", "50px")
   .attr("height", "50px")
   .append("div")
   .attr("id", function(d) {
      return "canvas_" + d.key.split(" ").join("_");
   })
   .style("width", "50px").style("height", "50px");

Javascript Solutions


Solution 1 - Javascript

You can't append HTML to SVG (technically you can with foreignObject, but it's a rabbit hole). Furthermore, visible elements in SVG can't be nested, so elements such as circle, rect, path and such can't have children elements.

Solution 2 - Javascript

I would also consider using <g> element as it serves similar purpose as <div> by grouping objects. More about it here.

Solution 3 - Javascript

You are trying to append "rect" as well as "div" in the same line. Porbably that is where you are failing Check out these tutotials for D3... Its an amazing library based on SVG http://alignedleft.com/tutorials/d3/drawing-svgs/

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsamView Question on Stackoverflow
Solution 1 - JavascriptmethodofactionView Answer on Stackoverflow
Solution 2 - JavascriptKarolis RamanauskasView Answer on Stackoverflow
Solution 3 - JavascriptAnaMariaView Answer on Stackoverflow