2011-11-17 95 views
0

現在我正在爲WordPress創建一些插件。所有需要單獨工作,但我想添加一個實現,讓他們一起工作。擁有不同的JavaScript文件共享相同的功能

對於初學者來說,所有腳本都將使用自定義名稱來引用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 
} 

這完全不起作用。任何人都有任何想法,我怎麼能得到這個工作?

+0

什麼是「JQ」屬性?它已經包含了什麼(因爲你測試它是** NOT ** _undefined_)。 –

+0

哦,這真的很愚蠢! –

回答

0

你只是有'未定義'的邏輯倒退。你應該說typeof myObject.jq === 'undefined'。雖然,由於jq預計是一個函數,更好的檢查將是typeof myObject.jq !== 'function'

+0

噢,哇,這是一個愚蠢的錯誤。抱歉! –

+0

適用於我們所有人;) – Ryan

0

爲了您的第一件作品,您需要聲明myObjectobject。而且javaScript會自動分配未定義的對象標識符,所以你不需要測試這個鍵是否存在。因此,改變你的代碼,下面的工作:

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

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

這WIL結果在下面myObject

myObject 
    ajaxcall: function (action) { } 
    jq: function (a,b){return new d.fn.init(a,b,g)} 
+0

哦,上面的腳本中沒有定義myObject。我只是有'!=='錯誤,真是愚蠢的錯誤。瑞恩有正確的答案。 –