web-dev-qa-db-ja.com

TypeError:$は関数ではありませんWordPress

購入したテーマの.jsドキュメントにエラーがある可能性があります。

$('.tagcloud a').wrap('<span class="st_tag" />');

私はそれを解決しようとしていますが、私はプログラマーではありませんので、私は方法がわかりません。このサイトは http://www.framerental.com です。

41
user1645326

jQuery.noConflict();を使用しているので、$は未定義です。

詳細についてはこちらをご覧ください docs

この方法でコードを変更してみてください($準備完了関数に署名)

jQuery(document).ready(function($) {
    // Code that uses jQuery's $ can follow here.
});
119
jurka

関数エラーは、ほとんどすべてのコンテンツ管理システムで一般的なものであり、これに対処する方法はいくつかあります。

  1. 次を使用してコードをラップします。

    _<script> 
    jQuery(function($) {
    
    YOUR CODE GOES HERE
    
    });
    </script>
    _
  2. noConflict(); を使用してjQueryのAPIを使用することもできます。

    _<script>
    $.noConflict();
    jQuery( document ).ready(function( $ ) {
    // Code that uses jQuery's $ can follow here.
    });
    // Code that uses other library's $ can follow here.
    </script>
    _
  3. ドキュメントを使用せずにnoConflictを使用する別の例:

    _<script>
    jQuery.noConflict();
        (function( $ ) {
            $(function() { 
                // YOUR CODE HERE
            });
         });
    </script>
    _
  4. 次のような競合を避けるために、エイリアスを作成することもできます。

    _var jExample = jQuery.noConflict();
    // Do something with jQuery
    jExample( "div p" ).hide();
    _
  5. さらに長い解決策は、$のすべての参照をjQueryに変更することです。

    $( "div p" ).hide();からjQuery( "div p" ).hide();

33
Simon Hayter

これを行う代わりに:

$(document).ready(function() { });

これを行う必要があります:

jQuery(document).ready(function($) {

    // your code goes here

});

これは、WordPressがjQuery以外の何かに将来、または現在使用する可能性があるため、$をjQueryドキュメントでのみ使用できるようにjQueryをロードする必要があるためです。準備完了コールバック。

13
Guy Castell

一部の人が示唆しているように、jquery toolkit/libを含めないか、種類の競合があります。テストするには:jQueryを含めて、次のようにテストします。

console.log($);
console.log($ === jQuery);

$が未定義ではなく、$ === jQueryがfalseをログに記録している場合は、間違いなく手に衝突があります。 $jQueryに置き換えるとそれは解決しますが、それは非常に面倒です(すべての余分な入力...)。一般に、少なくともjQueryオブジェクトへの短い参照を持つために、$jq = _$ = jQuery;でスクリプトを開始します。
もちろん、それを行う前に、事前に設定された変数を誤ってオーバーライドしていないかどうかを確認してください。console.log($jq, _jQ, _$);いずれかnotundefinedはもちろんそのままにしておく必要があります

9

これを追加してください:

<script>
var $ = jQuery.noConflict();
</script>

header.phpのheadタグに。または、管理領域(またはheader.phpが使用されていない場所)でドル記号を使用する場合は、使用する場所の直前に置きます。

(気づかない競合がいくつかあるかもしれません。テストして、もしあれば、ここまたはリンク下で提供されている他のソリューションを使用してください。)

ソース: http://www.wpdevsolutions.com/use-the-dollar-sign-in-wordpress-instead-of-jquery/

9
Fanky

headセクションの最後にロードするカスタムスクリプトファイルを追加し、上部に次を挿入しました。

(function (jQuery) {
    window.$ = jQuery.noConflict();
})(jQuery);

(これはFankyの答えの修正です)

6
Savage

NoConflict以外に、これも役立ちます。

(function( $ ) {
    // Variables and DOM Caching using $.
    var body = $('body');
    console.log(body);
})( jQuery );
5
Waqar Alamgir

JQueryを含めた場合、競合が発生する可能性があります。 $の代わりにjQueryを使用してみてください。

2
Giles Tamplin

JQuery wp_enqueue_script("jquery");をキューに登録するだけで、これを非常に簡単に解決できました。

0
Dan Osborne