在SVG中,在对象中更改圆形填充
Change fill on circle, within an SVG, within an object
所以我选择创建一个对象来放置SVG对象,因为我想复制它100次或更多次。下面是SVG:
<svg xmlns="http://www.w3.org/2000/svg" class="ballsvg" viewBox="0 0 98 98">
<g>
<circle class="changeCircle" cx="50%" cy="51%" r="48%" stroke="red" stroke-width="3" fill="blue" />
<text class="changeText" text-anchor="middle" x="50%" y="65%" font-family="Verdana" font-size="30" fill="white" ><tspan>0</tspan> </text>
</g>
</svg>
和我的JavaScript构建对象到div #svgMain
:
for(var i=0; i<addingTo; i++){
var obj = '<div class="clickBall" data-id="'+String(i+1+totalBalls)+'" ><object class="ball" data="ball.svg"></object></div>'
appendHTMLNodes += obj;
}
然后我在网上找到了如何动态更改对象上的文本:
$( "object.ball" ).each(function( index ) {
var textNode = $(this.contentDocument);
textNode = textNode.find(".changeText");
textNode = textNode.children().first();
textNode.text(index+1);
});
然后我想改变项目被点击时的填充颜色:
$(document).on('click', '.clickBall', function(event) {
var mySVG = $(this).find("object.ball");
mySVG = $(mySVG.contentDocument);
mySVG = mySVG.find(".changeCircle");
console.log(mySVG);
mySVG.attr("fill", "#FF0000");
});
但是我不知道如何得到正确的元素,因为它从来没有改变填充,即使我可以改变文本之前。谢谢你的帮助。
可以直接选择.changeCircle
,使用$(this)
属性填充svg
。试试下面的代码:
$(".changeCircle").on('click', function() {
$(this).css({ fill: "#ff0000" });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg xmlns="http://www.w3.org/2000/svg" class="ballsvg" viewBox="0 0 98 98">
<g>
<circle class="changeCircle" cx="50%" cy="51%" r="48%" stroke="red" stroke-width="3" fill="blue" />
<text class="changeText" text-anchor="middle" x="50%" y="65%" font-family="Verdana" font-size="30" fill="white" ><tspan>0</tspan> </text>
</g>
</svg>
更新:
tcoulson想要更新object
标签内的SVG。以下是访问SVG object
的方法:
$(function(){
$("#obj").contents().find(".changeCircle").attr({"fill":"lime"});
console.log($("#obj").contents().find(".changeCircle"));
});
相关文章:
- 用图像而不是颜色填充对象(将图像绘制到画布上)
- 从回调内部填充对象
- 在Angular JS中填充对象以进行插入
- 填充对象的Javascript数组时出现问题
- 用javascript填充对象数组
- Javascript;Ajax——填充对象的更好方法
- 用于填充对象的JavaScript类
- 在javascript中用数组填充对象
- 填充对象时插入我的对象中的神秘“删除”键
- 如何根据对象的两个值对填充对象的数组进行排序
- 猫鼬:在数组中填充对象时出现问题
- 填充对象时检查未定义的对象
- 试图通过填充对象来理解函数和回调范围
- 通过单击重新填充对象
- 如何获取由填充对象中的特定许可证 ID 创建的记录
- 在数组中填充对象
- 在foreach - javascript中填充对象
- 用来自另一个对象的细节填充对象
- 在循环中使用ajax填充对象
- 在javascript中向json中添加填充对象