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 を混在させることは避けています。バニラ js で要素の部分的な選択を試してください。

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

http://jsfiddle.net/h8Uc7/

またはさらに良いことに、バニラ 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 に答える