0

jqueryを使用してscrollto効果を使用するワードプレステーマを作成しています。

ハッシュ化されたURLを使用してページに入るまで、すべてがうまく機能します。

例えば:

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

ページの一番下に移動します。

これはFirefoxでのみ発生し、他のブラウザでは発生しません... IEでも機能します:D

ともかく。

私が言ったように、あなたが別のページから来るまで、すべてが100%機能します。

スクロール用のJavaScriptを削除すると、関連するdiv.idに移動しますが、コードを追加し直すと機能しなくなります。

また、これはページの下部近くの宛先にのみ発生します。

divがwordpressから作成される前に、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を最初に実行したときに要素がドキュメント本体内に存在しない場合でも、コードが実行されます。

私はワードプレスで多くの時間を過ごしたことがないので、これは暗闇の中で少し刺し傷です

于 2012-12-02T22:53:17.913 に答える