2012-11-05 98 views
0

使用Jquery从我的网站中选择一个HTML对象。使用此代码无法获取元素

<div id="banner"> 
    <!-- stuff in here --> 
</div> 

林:

$(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() 

})); 

不过,我不断收到错误“遗漏的类型错误:无法读取的未定义的属性‘顶’”

出于某种原因,其没有看到div'横幅'。

任何想法为什么?

编辑:

每下方的建议,我改变了代码从$(窗口).load为$(文件)。就绪。还是同样的问题。

$(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() 

})); 
+1

提示:$(document).ready,not $(window).load –

+0

这就是获取元素的很多代码。 – PeeHaa

+1

也可能是因为没有看到#footer div。 – Nelson

回答

1
$(window).load($(function() // Passing a jQuery Object Here 

应该是

$(window).load(function() // 

如果这不起作用与

$(document).ready(function() 
3

你传递一个jQuery对象到您的负载功能,而不是取代它功能。尝试删除主回调周围的$()。例如

$(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()而不是$(文件)。就绪(),这里的一些人所提出的建议。第二种更习惯,因为它更早执行(让用户更快地与你的页面进行交互)。请参阅此链接了解详细信息:http://4loc.wordpress.com/2009/04/28/documentready-vs-windowload/