【问题标题】:jQuery expression return 'undefined' in iPad SafarijQuery 表达式在 iPad Safari 中返回“未定义”
【发布时间】:2012-09-14 06:52:51
【问题描述】:

我正在研究 SVG 论文,我需要获取 text 元素的第一个 tspan 元素的值,该元素位于 rect 之前> 带有 jQ​​uery 的元素。

这段代码:

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 的解释与所有其他浏览器不同。我很乐意收到任何建议。

【问题讨论】:

  • console.log(jQuery(temp))console.log(temp) 出现了吗?
  • 第一行返回的矩形是否正确?
  • 我觉得三个浏览器都可以正常运行
  • 其余的在三个浏览器中也能正常工作。

标签: jquery ipad safari svg


【解决方案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/

【讨论】:

  • 非常感谢!这周一试试!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 2015-02-07
  • 2018-09-26
  • 2021-09-06
  • 2016-12-01
  • 2010-11-29
  • 2020-06-30
相关资源
最近更新 更多