0

ワードプレスのテーマを作成していますが、jQuery を使用する必要があります。私はオンラインでコードのビットを見つけ、自分でいくつかのコードを作成しました。ただし、wordpress が提供する jQuery を使用する場合は noConflict モードで、$ を使用する代わりに「jQuery」に設定されます。それは問題ありませんが、$ の代わりに「jQuery」を使用するために、すべてのコードとオンラインで見つけたコードを変更する必要はありません。

したがってfunction ($)、最後に配置することで、 $ を jQuery エイリアスとして使用できるが、その関数スコープでのみ使用できることがわかります。それは問題ありませんが、それが機能し、そのスコープ内から呼び出す関数に渡されることを望んでいました. それが私の問題です。「resizeandcenter」関数内で $ を使用する jQuery コードを機能させるにはどうすればよいですか。

jQuery('.artworklist > li > a > img').load(function ($){
   resizeitems('artworklist');
});

これは、すべてのコードを変更する必要がないため、内部で $ を使用できるようにしたい私の関数です / およびオンラインで見つけたコード。

function resizeitems(elementname){
    //Do some jquery stuff using $
}

おそらく、私がやっていることを行う別の方法がありますか、それとも間違っていますか?

編集:

私の関数「resizeitems」は、ページヘッダーに含まれるjsファイルに独自にあります。

もう 1 つのコード (最初のコード ブロックの jQuery コード) は、ページの下部にあるスクリプト ブロックにあります。

それで、私の関数をラップするという答えについて少し確信が持てませんか?

4

3 に答える 3

1

このように、コード全体を自己実行クロージャー (または on ready/load クロージャー) でラップできます。

(function ($) {
    // do your stuff here
}(jQuery));

次に、そのクロージャー内で $ を使用できます

これはあなたのためのjsfiddleの例です

window.addEventListener("load", function () {
    (function ($jq) {
        $jq("body").append($jq("<div>").text("hello"));
    }(jQuery));
}, false);

jquery のReadyイベントリスナーを使用した例を次に示します。

jQuery(document).ready(function() {
    (function ($jq) {
        $jq("body").append($jq("<div>").text("hello"));
    }(jQuery));
});

jsfiddleについて

または、 @ Mathleticsで提案されているように、jquery のさらなる代替手段、主に構文の変更

jQuery(function($jq) {
      $jq("body").append($jq("<div>").text("hello"));
});

jsfiddleについて

于 2013-05-10T17:18:16.097 に答える
0

コードを含むトップレベルのクロージャに jQuery を渡す必要があります。通常、これは$(document).ready()コール内にあります。基本的な例は次のようになります。

jQuery(function($) {
      function resizeitems(elementname){
          //Do some jquery stuff using $
      }
      $('.artworklist > li > a > img').load(function (){
          resizeitems('artworklist');
      });
});

jQuery$そのクロージャーの内部にエイリアスされます。

于 2013-05-10T17:17:48.650 に答える
0

ここで重要なのは範囲です。他の関数が他のスコープにある場合は、コードを変更する必要がないように、グローバル jQuery をそのスコープの $ に再マップするだけです。

var $ = jQuery;

グローバル スコープで設定することもできますが、他の目的で使用された場合、ページ上の $ の他の使用法に影響を与える可能性があります。

window.$ = jQuery;
于 2013-05-10T17:18:15.887 に答える