在JointJS中,元素具有SVG模板标记,您可以通过设置元素上的属性来动态更改输出内容。我找不到在标记中选择特定标记的方法,其中存在多个相同标记的出现。
JointJS文件包括:
另一个重要属性是
attrs
,它是一个带键的对象 表示与子元素匹配的选择器和SVG值 将在子元素上设置的属性。
和
[properties]可以使用常规直接访问或设置 主干
set()
/get()
方法
所以我不确定我的问题是仅涉及JointJS还是更普遍适用于Backbone或其他技术。
我的问题:
如果我有标记:
<g class="rotatable"><g class="scalable"><rect/></g><image/><text/></g>
我可以通过以下方式处理image
元素:
element.attr('image', { style: "display: none;" });
但是,我想要两个图像元素:
<g class="rotatable"><g class="scalable"><rect/></g><image/><image/><text/></g>
现在.attr('image')
访问第一个。我找不到访问第二个的语法。我尝试过这样的事情:
<g class="rotatable"><g class="scalable"><rect/></g><image id="img1"/><image id="img2"/><text/></g>
但element.attr('#img2')
似乎不起作用。同样适用于:
<g class="rotatable"><g class="scalable"><rect/></g><image class="img1"/><image class="img2"/><text/></g>
但element.attr('.img2')
似乎不起作用。
有什么想法吗?
答案 0 :(得分:0)
我认为这种行为纯粹是在JointJS代码中,而不是Backbone。虽然文档讨论了使用CSS选择器来引用元素,但我相信它是一些必须使用的内部缩减语法。
似乎你不能像image .class
那样使用任何东西作为选择器,就像在CSS中一样。它接受标签名称或类名称,但不接受两者。所以我给了两个<image>
中的每一个都有自己独特的类名,并且能够使用.class1
&amp; .class2
来解决每个元素。