$(对象)[0] .offsetTop在Chrome中工作,但不能在Firefox

问题描述:

我试图访问该属性:

$(text)[0].offsetTop 

它工作正常,在Chrome,但在Firefox我得到 '未定义'。 有什么办法可以在所有浏览器中做到这一点?

参见:http://jsfiddle.net/qgqr5m6n/3/

$("body").css("margin", "0px"); 
var svgNS = "http://www.w3.org/2000/svg"; 

var svgBox = document.createElementNS(svgNS, "svg"); 
$("body").append(svgBox); 
var text = document.createElementNS(svgNS, "text"); 
$(svgBox).append(text); 

text.innerHTML = "Hello World"; 

$(text).attr({ "dominant-baseline": "hanging"}); 
console.log($(text)[0].offsetTop); 

$(text).attr({ "x": 0 , "y": 0 }); 

如果你想知道什么,我需要这样的: 我要对齐的可变字体大小的文本在一个矩形的垂直中心。然而,字体大小总是包含在字母的实际顶部之上的一个小间隙。我想要的是实际的像素高度。字母上方的这个间隔正好是我将“显性 - 基线”设置为“挂起”之后的“offsetTop”的值。

+0

[this]的可能重复(http://stackoverflow.com/questions/6777506/offsettop-vs-jquery-offset-top) – 2014-09-20 17:03:17

改为$(element)[0] .offsetTop,使用$(element).offset()返回Top和left的对象。

+0

谢谢!但是,当我尝试$(文本).offsetTop(),我得到“未捕获TypeError:undefined不是一个函数”... – Linus 2014-09-20 19:59:00

+0

请考虑适用于'代码'正确的格式。 – Krumia 2014-09-25 03:08:45