2 Javascripts彼此不合作......(平滑滚动和淡化身体)

时间:2013-03-26 18:27:47

标签: javascript jquery scroll fade

亲爱的stackoverflowers,

我有两个javascript片段似乎无法正常工作。 第一个是在导航中点击事件淡出身体,然后重定向到另一个页面。但是,在我点击触发“JavaScript-2”的链接后,这似乎才有效。

以下是第一个代码:

// JavaScript-1
<script type="text/javascript">   
        $("a.transition").click(function(event){         
            event.preventDefault();                      
            linkLocation = this.href;
            $("body").fadeOut(1000, redirectPage);      
        });

        function redirectPage() {
            window.location = linkLocation;
        }
</script>   

'JavaScript-2'是第二个,与'jquery.easing.1.3.js'一起使用,可以很好地平滑滚动到锚点。滚动始终正常,并且在所有情况下都会触发。

我不知道为什么,但看起来,平滑滚动javascript会导致其他javascript失败。

我真的很期待这个小谜的答案。

以下是第二个代码:

    // JavaScript-2 
    <script type="text/javascript">  
        $(function() {
            $('ul.navscroll a, #test a').bind('click',function(event){              
                var $anchor = $(this);

                $('html, body').stop().animate({
                    scrollTop: $($anchor.attr('href')).offset().top
                }, 1500,'easeInOutExpo');
                event.preventDefault();
            });
        });
    </script>

1 个答案:

答案 0 :(得分:0)

尝试更新您的Javascript-1代码:

// JavaScript-1
<script type="text/javascript">   
   $(function() { // this fires the jQuery after load
        var linkLocation = false; // define the linkLocation var

        $("a.transition").click(function(event){         
            event.preventDefault();                      
            linkLocation = this.href;
            $("body").fadeOut(1000, redirectPage);      
        });

        function redirectPage() {
            window.location = linkLocation;
        }
   });
</script>   

这里有两个主要内容:

  1. $(function() {...});将在DOM完全加载后触发jQuery-Events
  2. 在您使用var linkLocation - 方法访问它们之前,必须先定义
  3. redirectPage()

    要删除Javascript-2(它打破Javascript的地方)中的错误,请按以下方式更新它们:

    // JavaScript-2 
    <script type="text/javascript">  
        $(function() {
            $('ul.navscroll a, #test a').bind('click',function(event){              
                target = $(this).attr('href'); // find the top of the target
                offset = $(target).offset(); // this returns an object {top: y,left: x}
                $('html, body').stop().animate({
                    scrollTop: offset.top
                }, 1500,'easeInOutExpo');
                event.preventDefault();
            });
        });
    </script>
    

    现在,如果您点击包含href='#test'的链接,您将滚动到带有ID测试的元素,例如<footer id='test'>