jQuery - Raphael - SVG - 基于自定义数据的选择器

3

我已经在Raphael画布中使用each()循环将自定义数据属性分配给一些圆形,如下所示:

marker.data('transaction', transaction);

我如何在画布上找到具有相同交易数据值的元素?

目前我的代码如下:

var found = document.querySelectorAll("[transaction='" + current_transaction +"']");

这个操作应该返回一个元素的NodeList,但它却不能正常工作。要将此数据检索到变量中,只需使用var foo = marker.data('transaction')即可。但显然,如果我想要检索元素的NodeList,则此方法行不通。

因此,我希望我的选择器如下所示,但我无法找出正确的语法:

var found = document.querySelectorAll("data('transaction' = 1)");

任何帮助都将不胜感激。
2个回答

5

由于 Raphael 必须支持VML,它不像HTML5应用程序一样将数据保留在DOM中。如果您想在DOM中存储数据,则必须访问HTML节点并在那里设置属性...

marker.node.setAttribute('data-transaction', transaction);

然后,您可以使用querySelectorAll查询元素。请注意,这在< IE8上会失败。

如果您想保持对较旧版本IE的支持,建议编写一个函数,该函数迭代标记并在mark.data("transaction") == transaction时返回Raphael对象。


2

哦,谢谢。那么基于 .data 函数,我的选择器会是什么样子? - jacktheripper
我在过去的两周中一直在使用raphaeljs作为高分辨率显示器图像替换测试的工具。因此,我对动态编码没有任何经验。抱歉。 - liquid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接