takayukister
管理者
10 ヶ月前の投稿 #
Contact Form 7 の作者です。こんばんは。
そういった現象は XHTML の構文が崩れているなどの理由で javascript が正常に機能できないときによく見られます。XHTML Validator などで一度点検してみてはいかがでしょうか。
ロードしている javascript のあいだでコンフリクトを起こしているケースも考えられます。その場合は masaru さんが指摘されたように他のプラグインの無効化で検証可能ですね。
もちろん他の理由も考えられるのでこの限りではありません。実際のページを見ることができれば問題点を誰か指摘できるかもしれません。
横からすみません。
jim912さんの指摘のようにテーマのjquery.jsの読み込む順序を変えるのが良いと思います。
個人的にはjquery.jsの読み込みをテーマにハードコードしているのが気になります。
プラグインによってはjquery.jsを使用するものもあり、二重三重に読み込んだりバージョンが違ったりムダも発生するように思います。
<?php wp_enqueue_script('jquery'); ?>
と作法にのってムダが無いようにスクリプトを読み込んだ方が良いかと思います。
<?php wp_enqueue_script('jquery'); ?>
<?php wp_head(); ?>
<script type="text/javascript" src="http://yokoyama-f.net/wordpressn/wp-content/themes/wsc4-1.1/js/tree.js"></script>
<script type="text/javascript">
jQuery.noConflict();
var j$ = jQuery;
</script>
</head>
のほうが良いかと思います。
コードの検証はしていません。
すみません、うっかり見落としてました。
jQuery.noConflict();
var j$ = jQuery;
がエラーの原因見たいです。
//var j$ = jQuery;
とコメントにしtree.js内のj$をjQueryに書き換えると良いような・・・
今度もコード検証をしていないのでうまくいかないかもです。
javascriptの読み込みを自分なりに整理してみたのですがうまくいきません。。
どういう風にされたのでしょう。
まずは header.php(多分)の
<?php wp_head(); ?>
以下の
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/jquery.js"></script>
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/tree.js"></script>
<script type="text/javascript">
jQuery.noConflict();
var j$ = jQuery;
</script>
を削除あるいはコメントにしてみるとどうでしょう。
takayukister
管理者
10 ヶ月前の投稿 #
無事(?)解決のようですね。
蛇足ながらいちおう補足でコメントしておくと、taikiken さんが書かれたように jQuery などのよく使われる Javascript ライブラリを読み込む時には wp_enqueue_script() を使うのが正しい手順です。今回のケースでも問題の根本は、テーマがこれを使わず独自に jquery.js を読み込んでいたことにありました (そこさえ正しくしていれば Javascript 全削除は必要なかったはず)。
wp_enqueue_script() はだいぶ前から用意されているものですがまだ知らないプラグイン/テーマ開発者も多いようで、こういったコンフリクト事例はけっこう頻繁に見られます。同じようなケースに遭遇した場合は、HTML ソースのヘッダを見て、同じ名前の js ファイルが複数回読み込まれていないかチェックしてみるとよいでしょう。