web-dev-qa-db-ja.com

WordPressでjQueryを使用して定義されていない$

私はjQueryがロードされたことを知っています、なぜなら私は 'jQuery'のために$を切り替えることができ、すべてが期待通りに振る舞うが、これを修正できなければ面倒なスクリプトになるでしょう。

このスクリプト:

jQuery(document).ready(function(){
    $("ul.vimeo_desc_feed li a").click(function(){
        alert($(this).attr('href'));
        return false;
    })
});

エラーを生成します$ is not a function

このスクリプト:

jQuery(document).ready(function(){
    jQuery("ul.vimeo_desc_feed li a").click(function(){
        alert(jQuery(this).attr('href'));
        return false;
    })
});

正常に動作します。

32
Mild Fuzz

Javascriptを自己起動関数の内側にラップしてから、ローカル変数名として$を使用してjQueryを引数として渡すことができます。例えば:

(function($) {
  $(document).ready(function(){
    $("ul.vimeo_desc_feed li a").click(function(){
      alert($(this).attr('href'));
      return false;
    })
 });
}(jQuery));

意図したとおりに動作するはずです。

WPが提供するバージョンのjQuery(wp_enqueue_script('jquery')を使用すると取得できるもの)を正しく覚えていると、jQueryはすぐに競合しなくなり、$が未定義になります。

41
nobody

あなたはもうすぐそこにいます!

jQuery(document).ready(function($){
    $("ul.vimeo_desc_feed li a").click(function(){
        alert($(this).attr('href'));
        return false;
    })

});

あなたはあなたのメソッドに$関数としてjQueryへの参照を渡さなければなりません。上記のように最初のfunction()呼び出しの中に$を入れるだけでも、問題はありません。

31
EAMann

JQueryに関数を渡すことは$(document).ready(...)の省略形です。そして、コールバックの最初のパラメータとして$を置くことによって、あなたはそのコールバックの中にjQueryのためのエイリアスを作成します:

jQuery(function($) {
    $("ul.vimeo_desc_feed li a").click(function(){
        alert($(this).attr('href'));
        return false;
    });
});

あなたはこれのためのドキュメンテーションを見ることができます ここ

6
rohmann