1

私がやっていること:

私は 3 つの jQuery UI ウィジェットと、個別の jQuery ベースのナビゲーション メニューを使用しています。

ここでは、3 つの UI ウィジェットが連携して動作していることを確認できます。

http://www.dominornovus.com/jquery-test-environment/

(リンクには、datepicker、selectmenu、およびボタンの jQuery UI ウィジェットが含まれています)

問題:

作業中のコードを別の Web サイトにコピーすると、jQuery UI ボタン​​を呼び出すと、ページ上のすべての jQuery がランダムに壊れます (個別の jQuery ベースのナビゲーション メニューを含む)。

http://www.dominornovus.com/killyiss-country-house/test/

私が提供した 2 つのリンクで見つかったページの唯一の違いは、jQuery ベースのナビゲーション メニューです。

ナビゲーション メニューに関連するすべてのコードを削除しても、ボタン UI ウィジェットを呼び出すとページの jQuery が壊れることに注意してください。

私の質問

2 つのページから、どのような違いがあり、一方のページはボタン UI 呼び出しで失敗するのに、もう一方のページは失敗しない理由を誰でも推測できますか?

2 つのページの間に識別可能な違いは見つかりませんが、動作が異なります。壊れます。もう一方はそうではありません。

4

1 に答える 1

0

さらに調査した結果、これは WordPress の問題であることが判明したため、代わりにこの問題を WordPress Answers に投稿しました。

簡単に言えば、jQuery を 2 回エンキューしていました。

これが私の最終的な作業コードです(テーマの function.php ファイルに追加されています):

    //https://wordpress.stackexchange.com/questions/64062/cannot-enqueue-jquery-correctly-using-google-cdn
    //http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Load_a_default_WordPress_script_from_a_non-default_location

    function my_scripts_method() {
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.12/jquery.min.js');
        wp_enqueue_script( 'jquery' );
        wp_enqueue_style( 'uicss', '(path_ to_script_location)/my-custom-style.css' );    
        wp_enqueue_script( 'uisel', 'http://jquery-ui.googlecode.com/svn/branches/labs/selectmenu/ui.selectmenu.js' );
        wp_enqueue_style( 'uicss2', 'http://jquery-ui.googlecode.com/svn/branches/labs/selectmenu/ui.selectmenu.css' );
    }    

    //add_action('wp_enqueue_scripts', 'my_scripts_method'); // selectmenu would not work targeting wp_enqueue_scripts
    add_action('wp_head', 'my_scripts_method'); //use wp_head instead

WordPress Answers スレッドはこちらで読むことができます: https://wordpress.stackexchange.com/questions/64062/cannot-enqueue-jquery-correctly-using-google-cdn

しばらくして、selectmenu ウィジェットを WordPress にうまく適用する方法を見つけました。

WordPress のインストールには、jQuery スクリプトのバンドルが付属しています。

fnagel selectmenu は、jquery および jquery-ui スクリプトのデフォルト バンドルでは機能せず、代わりに Google CDN を使用して外部から参照する必要があります。

WordPress のデフォルトのローカル jQuery ライブラリの登録を解除し、Google CDN をエンキューしてから、selectmenu スクリプトと CSS をエンキューする必要がありました。

于 2012-09-05T07:54:51.853 に答える