使div滚动直到它到达页面顶部?

时间:2012-12-29 03:34:00

标签: javascript jquery css wordpress

我试图在wordpress中使用以下示例 - 我需要一个div来保存一个广告,例如,300px向下翻页,然后向上滚动页面直到它到达顶部,然后留在那里,如果用户继续向下滚动。这个例子应该解释一下:

http://jsfiddle.net/jPxEY/

这里它是一个html文件应该可以工作,一切似乎都存在,但它不起作用:http://www.altesc.net/exmp.html

事实上,如果你在“类似问题”框中查看并向下滚动,那正是我所追求的。

我很确定我已经完成了所有事情,但javascript似乎无法正常工作。如果我从jquery复制所有内容并将其直接添加到标题中,而不是在单独的js文件中,它可以工作,只有当我像这样调用jquery时才会这样:

<script src="http://code.jquery.com/jquery-1.7.1.js" type="text/javascript">

它未能开始。

关于什么是错的任何想法?

添加了我的标题以提供帮助:

<script type='text/javascript' src='http://www.altesc.net/wp-includes/js/jquery/jquery.js?ver=1.8.3'></script>

<script type="text/javascript">
//<![CDATA[
$(window).load(function(){

$(document).scroll(function() {

var useFixedSidebar = $(document).scrollTop() > 330;
$('.adscrollleft').toggleClass('fixedSidebar', useFixedSidebar);

});

});//]]> 
</script>

4 个答案:

答案 0 :(得分:1)

删除此内容:$(window).load(function(){

答案 1 :(得分:1)

正如我在该问题的评论中所说,你的jQuery包含文件,在最底层,调用jQuery.noConflict();,释放$速记函数引用jQuery()

因此,解决此问题的最直接方法是:

jQuery(window).load(function(){
    jQuery(document).scroll(function() {
        var useFixedSidebar = jQuery(document).scrollTop() > 330;
        jQuery('.adscrollleft').toggleClass('fixedSidebar', useFixedSidebar);
    });
});

现在您的代码正常运行。这是在我的计算机上运行的文件的Pastebin(请注意,如果你有一个非常大的屏幕,你不应该保持浏览器最大化):

http://pastebin.com/GCvaCF7c

有些人非常喜欢$简写,所以你会看到很多:

//                   >>> The $ below <<<
jQuery(window).load(function($){
    $(document).scroll(function() {
        var useFixedSidebar = $(document).scrollTop() > 330;
        $('.adscrollleft').toggleClass('fixedSidebar', useFixedSidebar);
    });
});

jQuery允许您在范围内使用它。现在,只要你在全球范围内使用jQUery()就习惯了。

答案 2 :(得分:0)

这里有几个问题:

  • 首先,使用jQuery的本地副本。

    虽然在线副本会一直保持不变,但最好是拥有自己的副本。以另一种方式来思考:如果jQuery网站出现故障怎么办?你正在“吮吸”的脚本也会崩溃,并使依赖于leeched jQuery的脚本失败。

  • 首先加载库

    脚本按顺序加载和解析,一个接一个(除非使用某些异步内容,如deferasync属性,或依赖加载器)。如果您的代码片段依赖于jQuery并且在 jQuery之前加载,那么它将失败。首先加载库脚本,然后加载依赖它的脚本。

    快速了解我的意思:

    <script src="jQuery.js"></script>
    <script src="yourScriptThatDependsOnJQuery.js"></script>
    <script>
        //scripts that depend on jQuery
    </script>
    

答案 3 :(得分:0)

您可以尝试使用此功能。

  1. 确保您的脚本被拉入页面,一种方法是使用Chrome调试器中的“来源”标签并在html主题部分中搜索其他文件

  2. 确保在包含jQuery之后已经包含了依赖脚本,因为它肯定依赖于它。

  3. 检查jQuery是否正确包含且仅一次。

  4. 注意jQuery caonflicts。还有一些其他的库覆盖了$,所以你的代码不能工作,因为$不再是jQuery的别名。您可以使用jQuery.noConflict()来避免与页面上使用相同变量$的其他库发生冲突。