0

今、私はWordPress用のいくつかのプラグインを作成しています。すべてが別々に機能する必要がありますが、それらを一緒に機能させるための実装を追加したいと思います。

手始めに、すべてのスクリプトはカスタム名を使用してjQueryを参照します。これは、私の問題が始まる最初の部分です。WordPressには、すべての値を入力したい結合オブジェクトがあります。結合されたオブジェクトの名前は次のとおりmyObjectです。

今私はこれを試しますが、機能しません:

if( typeof myObject.jq !== 'undefined' )
    myObject.jq = jQuery.noConflict();

myObject.jq(document).ready(function(){

}

「myObject.jq」は関数ではありませんというエラーメッセージが表示されます。

このように組み合わせたajax関数でこれをさらに拡張したい

if( typeof myObject.jq !== 'undefined' ){
    myObject.jq = jQuery.noConflict();

    myObject.ajaxcall = function(action){
        var dfr = myObject.jq.Deferred();
        myObject.jq.ajax({
            url:myObject.ajaxurl,
            type:'post',
            data:{
                action:action,
                face:myObject.face
            },
            dataType:'json',
            success:dfr.resolve
        });
        return dfr.promise();
    };
}

myObject.jq(document).ready(function(){
    // My code here
}

これは完全には機能しません。誰かが私がこれをどのように機能させることができるか考えていますか?

4

2 に答える 2

0

'undefined'ロジックが逆になっているだけです。あなたは言うべきtypeof myObject.jq === 'undefined'です。ただし、jqは関数であることが期待されるため、より適切なチェックはですtypeof myObject.jq !== 'function'

于 2011-11-17T05:53:40.070 に答える
0

myObject最初のピースを機能させるには、として宣言する必要がありますobject。また、javaScriptは未定義のオブジェクト識別子を自動的に割り当てるため、キーが存在するかどうかをテストする必要はありません。したがって、コードを次のように変更すると機能します。

var myObject = {};
myObject.jq = jQuery.noConflict();
myObject.ajaxcall = function(action) {
 //You function code
};

myObject.jq(document).ready(function(){
  //Your code goes here
});

これにより、次のようになります。myObject

myObject
  ajaxcall: function (action) { }
  jq: function (a,b){return new d.fn.init(a,b,g)}
于 2011-11-17T06:21:45.433 に答える