2017-07-08 9 views
0

私のwordpressサイトは私のページにスクリプトを読み込まない。私は私がいないページのソースコードを表示するとなぜ私のjQueryスクリプトをWordPressに読み込まないのですか?

$(document).ready(function() { 
    var stickyNavTop = $('.blog-nav').offset().top; 

     var stickyNav = function(){ 
     var scrollTop = $(window).scrollTop(); 

        if (scrollTop > stickyNavTop) { 
         $('.blog-nav').addClass('sticky'); 
        } 
        else { 
         $('.blog-nav').removeClass('sticky'); 
        } 
       }; 

      stickyNav(); 

     $(window).scroll(function() { 
      stickyNav(); 
    }); 
}); 

function nav_script() { 

    wp_enqueue_script('script', get_stylesheet_directory_uri() .'/js/script.js', array('jQuery'), '1.0.0', true); 

} 

add_action('wp_enqueue_scripts', 'nav_script'); 

と、次のようにscripts.jsにcontaintedスクリプトは次のとおりです。私はのfunctions.phpに以下の機能を置きますスクリプトを参照して、何らかの理由でロードされていなかったので...私は頭の中にwp_headを、bodyの終了タグの前にwp_footerを持っているので、何が起こっているのかという手掛かりはない。
function nav_script() { 
     ?> 
     <script> 

      $(document).ready(function() { 
           var stickyNavTop = $('.blog-nav').offset().top; 

            var stickyNav = function(){ 
            var scrollTop = $(window).scrollTop(); 

            if (scrollTop > stickyNavTop) { 
              $('.blog-nav').addClass('sticky'); 
            } else { 
              $('.blog-nav').removeClass('sticky'); 
            } 
            }; 

            stickyNav(); 

            $(window).scroll(function() { 
             stickyNav(); 
           }); 
          }); 

     </script> 
     <?php 
    } 

add_action('wp_head', 'nav_script');  

しかしI:関数が編集

...私はJSFiddleにしようとしたとして、通常のHTMLで働く... Guysは、私はこのように、関数に「手動」スクリプトを追加することで何かを達成しました2つのことに気付いた: 1つ:<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>のCDNを頭に挿入しないと動作しません。 TWO:私は私にいくつかのプラグインの競合を示唆しているウェブサイトを、リロードする場合にのみ動作します...

+0

ソースを表示しますか?またはDOMを検査する? 2つの非常に異なるもの! –

+0

ここからわかるように、右クリックしてページソースを表示しました。https://jsfiddle.net/7undbb8L/ @NiettheDarkAbsol –

+0

「ページソース」は、JavaScriptが実行される前にサーバーから受信されたものです。 –

答えて

0

問題を修正しました。最初の問題は、.jsファイルがソースに存在しないようにページにロードされていなかったため、これまで使用していたものと似たコードを使用しました。ちょっと単純に、arrayと関連する値を削除しましたバージョンとフッターに、ちょうどこのように:機能

blognav_script() { 
    wp_enqueue_script('blognav', get_stylesheet_directory_uri() . '/js/script.js'); 
} 

add_action('wp_enqueue_scripts', 'blognav_script'); 

...私は正確に理由を言うことはできませんが、あなたは、私がコメントに投稿1と私のソースコードを比較する場合は、存在に気付くでしょう'/js/script.js'の - ページソース:https://jsfiddle.net/qx5fbxa7/ - 。

第二の問題:私は(編集済みとして)ページを更新しない限り、スクリプトがロードされないだろう...私はクラスを持つの条件を設定する条件ロジックで解決:

// function to run on page load and window resize 
    function stickyUtility() { 

     // only update navOffset if it is not currently using fixed position 
     if (!jQuery(".blog-nav").hasClass("fixed")) { 
      navOffset = jQuery(".blog-nav").offset().top; 
     } 

// run on page load 
    stickyUtility(); 

私は実際には全体を変更この問題を解決する方法を指摘するために、これを修正する行があります!

-1

WordPressはちょうどトップ

var $ = jQuery

を追加$jQuery用として短いを認識しません。

+0

$の代わりにjQueryでドキュメント全体を書きましたが、うまくいきませんでした...スクリプトがロードされていないと思います何らかの理由でウェブサイト –

+0

は何も返されなければ 'console.log' jQuery'を試してからcdnから追加してください;) –

関連する問題