1

我正在研究 SVG 论文,我需要获取文本元素的第一个tspan元素的值,该元素位于jQuery 的rect元素之前。

这段代码:

var rects = jQuery("#holder").find("rect");
jQuery.each(rects, function(){
    var temp = jQuery(this).prev().find('tspan:first')[0];
    console.log(jQuery(temp).text());
})

在 Chrome、FF 和 IE9 中完美运行。但它仅在 iPad 上的 Safari 中返回“未定义”。我不知道这段代码有什么问题以及为什么 Safari 的解释与所有其他浏览器不同。我很乐意收到任何建议。

4

1 回答 1

1

由于这样的边缘情况,我避免将 jQuery 与 SVG 混合。尝试使用 vanilla js 部分选择元素:

var rects = $("#holder").find("rect");
$.each(rects, function(){
    temp = this.previousElementSibling.querySelector("tspan")
    console.log($(temp).text());
})​;

http://jsfiddle.net/h8Uc7/

或者更好的是,只需使用 vanilla js,它同样简单且速度更快:

var rects = document.querySelectorAll("#holder rect");
for (i=0; i < rects.length; i++) {
    temp = rects[i].previousElementSibling.querySelector("tspan")
    console.log(temp.textContent);
}​

http://jsfiddle.net/aE5mq/

于 2012-09-22T02:11:57.210 回答