首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获取元素

无法获取元素
EN

Stack Overflow用户
提问于 2012-11-06 02:51:37
回答 2查看 169关注 0票数 0

我正在使用Jquery从我的站点选择一个HTML对象。

代码语言:javascript
复制
<div id="banner">
  <!-- stuff in here -->
</div>

我正在使用下面的代码:

代码语言:javascript
复制
$(window).load($(function()
{
    var elem = $("#banner");
    var top = elem.offset().top;
    var maxTop = $("#footer").offset().top - elem.height();
    var scrollHandler = function()
    {
      var scrollTop = $(window).scrollTop();
      if (scrollTop<top) {
        elem.css({position:"relative",top:""})
      } else if (scrollTop>maxTop) {
        elem.css({position:"absolute",top:(maxTop+"px")})
      } else {
        elem.css({position:"fixed",top:"0px"})
      }
    }
    $(window).scroll(scrollHandler);scrollHandler()

}));

然而,我一直收到错误“未捕获TypeError:无法读取未定义的属性'top‘”

由于某种原因,它看不到div 'banner‘。

知道为什么吗?

编辑:

根据下面的建议,我将代码从$(window).load更改为$(document).ready。还是同样的问题。

代码语言:javascript
复制
$(document).ready($(function()
{
    var elem = $("#banner");
    var top = elem.offset().top;
    var maxTop = $("#footer").offset().top - elem.height();
    var scrollHandler = function()
    {
      var scrollTop = $(window).scrollTop();
      if (scrollTop<top) {
        elem.css({position:"relative",top:""})
      } else if (scrollTop>maxTop) {
        elem.css({position:"absolute",top:(maxTop+"px")})
      } else {
        elem.css({position:"fixed",top:"0px"})
      }
    }
    $(window).scroll(scrollHandler);scrollHandler()

}));
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-06 02:58:24

代码语言:javascript
复制
$(window).load($(function()   // Passing a jQuery Object Here

应该是

代码语言:javascript
复制
$(window).load( function()   //  

如果这不起作用,请将其替换为

代码语言:javascript
复制
$(document).ready( function() 
票数 1
EN

Stack Overflow用户

发布于 2012-11-06 02:59:14

您正在将jQuery对象传递给加载函数,而不是传递给函数。尝试删除主回调周围的$()。例如:

代码语言:javascript
复制
$(window).load(function()
{
var elem = $("#banner");
var top = elem.offset().top;
var maxTop = $("#footer").offset().top - elem.height();
var scrollHandler = function()
{
  var scrollTop = $(window).scrollTop();
  if (scrollTop<top) {
    elem.css({position:"relative",top:""})
  } else if (scrollTop>maxTop) {
    elem.css({position:"absolute",top:(maxTop+"px")})
  } else {
    elem.css({position:"fixed",top:"0px"})
  }
}
$(window).scroll(scrollHandler);scrollHandler()

});

注意:使用$().load()而不是这里的一些人建议的$().ready()本身并没有什么错误。第二个更惯用,因为它执行得更早(让用户更快地与页面交互)。详情请参阅此链接:http://4loc.wordpress.com/2009/04/28/documentready-vs-windowload/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13238429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档