這似乎是一個簡單的問題來回答,但我很難這樣做:是否有可能在新的SVG g標籤中「包裝」現有的SVG形狀即組)使用d3.js,.wrap()
的方式在jQuery中工作?如果我只是簡單地手動創建一個新的g標籤,那麼我將如何將現有元素移動到g中?在G標籤中包裝現有的SVG元素
6
A
回答
9
如果您將現有的DOM元素傳遞給append
或insert
,元素(及其子元素)將從其當前位置移至DOM層次結構中的任何位置,直至您剛插入它們的位置。
var stuffToBeWrapped = d3.selectAll(".stuff");
stuffToBeWrapped.each(function() {
d3.select(this.parentNode).insert("g", function(){return this;})
//insert a new <g> element immediately before this element
.attr("class", "wrapper") //set anything you want to on the <g>
.append(function(){return this;});
//move the content element into the group
});
這是一個有點亂,因爲D3希望你總是使用函數來確定要插入或插入之前哪一個元素,而當我們的each
語句內做這一切是沒有必要的。但它應該完成工作!
(或者,使用JQuery的方法,如果你已經有了自己的網頁上圖書館。JQuery的通常不會有任何問題操縱 SVG元素,它只是不能創建它們!)
+1
美麗的答案。謝謝。 – drewmoore
1
無法使@AmeliaBR的答覆工作,我解決了像這樣
d3.selectAll(selectElementsToWrap).each(function() {
var el = this;
d3.select(el.parentNode)
.insert("g")
.attr("class", "wrapped")
.append(function() { return el; });
});
的認可的解決方案給我DOMException: Failed to execute 'appendChild' on 'Node': The new child element contains the parent
相關問題
- 1. 如何通過<g>標籤包裝一組svg元素?
- 2. 將svg字符串元素插入現有的svg標籤
- 3. 如何將SVG元素包裝到svg元素中?
- 4. SVG動畫G元素
- 5. 包裝圖例元素中的標籤元素
- 6. d3選擇和修改svg元素中的g元素
- 7. 將SVG元素附加到使用JS的現有SVG元素
- 8. 檢索svg的子元素g
- 9. 如何在「submit」元素的包裝中呈現Drupal表單「標記」元素?
- 10. 將少量元素及其子元素包裝在標籤中。 JQuery
- 11. 計算Svg <g>標籤寬度
- 12. 如何定位一個「G」元素SVG
- 13. DOM4J:包裝所有元素與<any>標籤
- 14. 訪問在Adobe Illustrator中創建的SVG DOM /'g'元素
- 15. 使用數據集中的d3.js,在svg的g元素中添加兩個不同的svg元素
- 16. 在EXTJS中包裝標籤
- 17. 在Zend_Form_Element_Radio中包裝標籤
- 18. 在BeautifulSoup中用標籤包裝帶有標籤的小節
- 19. 如何在SVG g元素中居中文本?
- 20. 在PDF中呈現SVG標籤
- 21. 元素沒有出現在包裝中,他們低於
- 22. TinyMCE中的標籤內包裝標籤
- 23. 用D3.js包裝div中的每五個svg元素
- 24. 如何用jQuery中的另一個包裝現有的元素?
- 25. 在SVG中使用CSS創建動畫元素<g>
- 26. 如何在SVG中點擊一個g元素
- 27. 使用JavaScript在新標籤元素中創建標籤元素
- 28. 用它的祖先節點/標籤包裝一個XML元素
- 29. 使用XSLT把圍繞XML標籤的包裝元素
- 30. jQuery的包裝套以打開和關閉標籤元素
D3不提供任何功能性的問題,它更容易使用'包()'如果這就是你想要的。 –
@LarsKotthoff和jQuery沒有關係在SVG中包裝元素? – drewmoore
我從來沒有用過它,但我不明白爲什麼它不應該 - 它只是一個DOM。 –