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

jQuery - Raphael - SVG - selector based on custom data

本文关键字:数据 选择器 自定义 Raphael SVG jQuery      更新时间:2023-09-26

我已经为添加到拉斐尔画布中的一些圆分配了一个自定义数据属性,如下所示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)");

任何帮助将不胜感激

由于Raphael必须支持VML,因此它不会像html5应用程序那样将数据保留在DOM中。如果要在 dom 中存储数据,则必须访问 html 节点并在那里设置属性...

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

然后,您可以使用 querySelectorAll 查询元素。请记住,这将在 IE8 <失败。>

如果你想保留旧的IE支持,我建议编写一个函数来迭代你的标记,并在mark.data("transaction") == transaction时返回Raphael对象

我认为

问题是jQuery无法访问SVG节点。你必须尝试普通的Javascript。问题可能是如果您使用旧浏览器的兼容性 querySelectorAll .

看这里: http://dean.edwards.name/jsb/behavior/querySelectorAll.html在这里: http://www.w3.org/TR/selectors-api/#queryselectorall

可能的解决方案:看看拉斐尔-多克:http://raphaeljs.com/reference.html#Element.data