jQuery$(this).position().top在Chrome中不起作用



我想知道这段代码是否不起作用。。。

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

它适用于IE、Firefox和Safari,但当我在Chrome中提醒输出时,它会显示DOM窗口对象。。。我需要一个整数。为什么它会提醒DOM窗口对象?

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

更新:有趣的是,Chrome不会让你隐式覆盖top(这可能是一件好事):Demo。只要在代码所在的任何函数中声明你的变量(无论如何,这总是一个好主意)(代码在函数中,对吧?),这会对它产生阴影,所以这会起作用:Demo。例如:

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

为了避免成为隐式全局变量的牺牲品,声明变量是很重要的。正如您在本例中发现的那样,避免全局性总是最好的,因为如果您声明top,Chrome甚至不允许您将其用作全局性(再次保护window.top)。

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

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

相关内容

  • 没有找到相关文章

最新更新