如何在JointJS / Backbone

时间:2017-07-11 12:18:31

标签: javascript backbone.js css-selectors jointjs

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')似乎不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为这种行为纯粹是在JointJS代码中,而不是Backbone。虽然文档讨论了使用CSS选择器来引用元素,但我相信它是一些必须使用的内部缩减语法。

似乎你不能像image .class那样使用任何东西作为选择器,就像在CSS中一样。它接受标签名称或类名称,但不接受两者。所以我给了两个<image>中的每一个都有自己独特的类名,并且能够使用.class1&amp; .class2来解决每个元素。