jQuery $(this).position()。顶部无法在Chrome中运行

时间:2011-06-21 04:23:46

标签: javascript jquery google-chrome

我想知道这段代码是否有任何原因不起作用......

top = $(this).find('ul').position().top;

它可以在IE,Firefox和Safari中运行,但是当我在Chrome中提示输出时它会显示DOM窗口对象...我需要一个整数。为什么它会警告DOM窗口对象?

2 个答案:

答案 0 :(得分:12)

你确定你真的警告那个 top吗?回想一下,top是浏览器托管的JavaScript中的预先存在的全局变量(它是window.top,顶层窗口。)

更新:有趣的是,Chrome不会让您隐式覆盖top(这可能是一件好事):Demo。只需在代码所在的任何函数内声明你的变量(无论如何总是一个好主意)(函数中的代码 ,对吗?),这将shadow它,所以这将是工作:Demo。 E.g:

var top = $(this).find('ul').position().top;

声明变量非常重要,以避免成为Horror of Implicit Globals的牺牲品。正如你在这种情况下发现的那样,避免全局变量总是最好的,因为如果你声明它,Chrome甚至不允许你使用top作为全局变量(再次保护window.top)。

答案 1 :(得分:2)

确保将值分配给本地范围的变量。使用var关键字。

var top = $(this).find('ul').position().top;