offset()。返回顶部窗口对象

时间:2012-03-01 13:07:47

标签: jquery

我无法通过。

我需要从jquery对象获取offset()。top,这是我的代码

parentLi = $(element).parents("li");
parentLiOffset = parentLi.offset();
top = parentLiOffset.top;
left = parentLiOffset.left;
console.log(parentLiOffset);
console.log(top);
console.log(left);

这就是控制台回馈的内容:

Object { top=208, left=311}  
Window /demo/
311

正如你所看到的,我无法获得“顶级”价值。我是firefox,如果这有任何区别的话。

谢谢!

3 个答案:

答案 0 :(得分:13)

问题是您没有使用var关键字来声明变量。 topwindow的属性(只读属性,这就是您的代码不会覆盖它的原因)。这样做:

var top = parentLiOffset.top;
var left = parentLiOffset.left;

left无法使用var,因为left不是window的属性。您的代码会创建名为window的{​​{1}}属性,并为其指定正确的值。但是,最好始终使用left关键字来防止变量泄漏到全局范围。

var属性“返回对窗口层次结构中最顶层窗口的引用”。

答案 1 :(得分:1)

您忘了在本地声明这些变量。

这样做:

var top = ...
var left = ...

如果您未预先声明变量,则会将它们视为全局属性。在这种情况下,您尝试写入只读的window.top属性。

事先未能声明变量是危险的,因为它会产生意想不到的结果(如您自己所见)。

答案 2 :(得分:1)

这是唯一的代码还是你得到了top和consol.log的定义。

是的,当你声明变量时,习惯在你的变量之前写“var”是一件好事。