0

我正在创建一个使用 jquery 的滚动效果的 wordpress 主题。

在您进入带有散列 URL 的页面之前,一切正常。

例如:

http://www.domain.com/#contact

它只会转到页面底部。

这只发生在 firefox 而不是任何其他浏览器中……即使 IE 也可以:D

反正。

正如我所说,在您从另一个页面进入之前,一切都 100% 有效。

如果我删除用于滚动的 javascript,那么它会转到相关的 div.id,但是当我将代码添加回来时,它会停止工作。

此外,这只发生在页面底部附近的目的地。

我尝试在页脚而不是页眉中加载代码,以防它在从 wordpress 创建 div 之前读取 jquery,但这并不好。这没用。

这是我创建的 jquery。

jQuery(function(){

/***************************************************
        VERTICAL SCROLLING
***************************************************/
    jQuery('a#ublblogback').click(function(){ parent.history.back(); return false;});
    jQuery('#main a, a.internal, a.da-link,  #menu_nav a, .footer_inner a, #footerinternal').click(function(e){

        if (!jQuery(this).hasClass("thisisabloglink")) {
            e.preventDefault();
        }

        jQuery('div#main ul li:last-child').find('a').css('background','none');

        var $anchor = jQuery(this);
        var $section = jQuery($anchor.attr('href'));
        var topOffset = $section.offset().top;

        // Adjust extra offset if not primary section 
        if(!$section.parent('#wrapper').length){
            topOffset = topOffset - 0;
        }

        // Scroll page
        jQuery('html, body').stop().animate({
            scrollTop: topOffset
        }, 1500, 'easeInOutExpo');

    });

/***************************************************
        SCROLLING
***************************************************/
    jQuery(window).scroll(function(){

        var scrollOffset = jQuery(this).scrollTop();

        if(scrollOffset <= 125){
            jQuery('#logo').stop().animate({top: -scrollOffset}, 700);
            jQuery('#main').stop().animate({top: -scrollOffset + 155}, 50);
        }else{
            jQuery('#logo').stop().animate({top: -225}, 50);
            jQuery('#main').stop().animate({top: 0}, 50);
        }
    });
})(jQuery);
4

1 回答 1

0

你的页面有链接吗?- 这可能是在初始站点访问时加载的,当您更改页面时,内容正在通过 ajax 加载,因此当函数在页面加载时运行时,您在 jquery 中引用的 dom 元素不存在。

一个可能的解决方案可能是替换您的 .click - 这一行:

jQuery('#main a, a.internal, a.da-link,  #menu_nav a, .footer_inner a, #footerinternal').click(function(e){

.on 像这样:

jQuery('body').on('click', '#main a, a.internal, a.da-link,  #menu_nav a, .footer_inner a, #footerinternal', function(e){

即使最初运行 jquery 时文档正文中不存在元素,这也会使代码运行。

我没有花很多时间在 wordpress 上,所以这有点像在黑暗中刺伤

于 2012-12-02T22:53:17.913 回答