2017-01-01 24 views
0

私はこの問題で完全に謎めいていますが、誰かが問題の原因かもしれないという手がかりを持っていますか?Mystery "TypeError:navWrap.offset()is undefined"

私は(ワードプレスで)私のカスタムのjsファイルに追加するコードは次のとおりです。

var navWrap = jQuery('#sidebarnavWrap'), 
    nav = jQuery('#sidebarnav'), 
    startPosition = navWrap.offset().top, 
    stopPosition = jQuery('#footer-three').offset().top - nav.outerHeight(); 

jQuery(document).scroll(function() { 
//stick nav to top of page 
var y = jQuery(this).scrollTop() 

    if (y > startPosition) { 
     nav.addClass('sticky'); 
     if (y > stopPosition) { 
      nav.css('top', stopPosition - y); 
     } else { 
      nav.css('top', 0); 
     } 
    } else { 
    nav.removeClass('sticky'); 
} 
}); 

このコードはjsfiddleで完璧に動作します。私のWordPressのサイト上で使用された場合、まだ、コンソールは言及:あなたのいずれかのは、これを引き起こす可能性があるのか​​分からPROください

http://jsfiddle.net/ykto7uu9/42/

はTypeErrorをnavWrap.offset(...)は定義されていませんか」? ありがとうございます。

追加情報:私のカスタムJSファイルが既に/非表示のテキスト(なしコンフリクト)を表示するために非常に単純な作業jQueryのコードが含まれていると私は使用してのfunctions.phpでスクリプトをエンキュー:

function my_javascripts() { 
wp_enqueue_script('js.custom', '/wp-content/themes/mytheme-child/js/js.custom.js', array()); 
} 
add_action('wp_enqueue_scripts', 'my_javascripts', 1000); 
+0

要素がまだ存在していない可能性があります。すべてを$(function(){})の中に入れてみてください。 – carloliwanag

+0

お時間を頂き、ありがとうございました@carloliwanag、しかしそれはうまくいきませんでした。 (すでにそれも試しました):)下のネイサンの答えはそれを修正しました。良い一日を! – TimVanGorp

答えて

1

ます」あなたのJSをページの先頭に読み込んで、準備が整ったコールバックを待っているわけではありません。コードが起動するときには、sidebarnavWrap要素はありません。

にあなたの全体のJSコードブロックをラップ:

jQuery(document).ready(function() { 

    // CODE HERE 

}); 

私はまた、あなたのエンキュースクリプト呼び出しの調整のカップルをお勧めします。

  1. あなたは
  2. はフッターにスクリプトを移動
  3. ので、依存関係としてそれを定義するのjQueryを使用している

更新版:私は推測することができます

wp_enqueue_script('js.custom', '/wp-content/themes/mytheme-child/js/js.custom.js', array('jquery'), false, true); 

https://developer.wordpress.org/reference/functions/wp_enqueue_script/

+0

あなたのきれいですてきな返信をありがとうございました@ネイサンドーソン!エンキュースクリプトコールを更新して問題を修正しました。もう一度お時間をいただき、ありがとうございます。 – TimVanGorp