2013-12-21 56 views
0

我不能爲我的生活找出如何做到這一點。我有我的jquery名稱間隔一定的方式,它以前綴NWO。{功能名稱},使其更有組織。所以它看起來是這樣的:jQuery - 檢查功能是否定義

var NWO = NWO || {} 

NWO.Chat = (function() { 
    return{ 
    init : function($objects) { 
    console.log('do something');   
    } } 
} 
}()); 

jQuery(document).ready(function(){ 
    NWO.Chat.init($('div').find('a.chat')); 
}); 

現在聊天元素不是​​每一頁上都等在那裏聊天鏈接不存在某些頁面,我得到一個NWO.Chat是不確定的。我認爲沒有聊天鏈接的頁面我可以這樣做,以避免錯誤。

if(jQuery().NWO.Chat){ NWO.Chat.init($('div').find('a.chat')); } 

if($.fn.NWO.Chat){ NWO.Chat.init($('div').find('a.chat')); } 

但無論似乎是工作,我仍然得到錯誤。當聊天鏈接不在頁面上時,如何避免js錯誤。我一直在b my我的頭幾個小時。提前致謝。

回答

5

NWO不是一個jQuery插件,所以什麼都沒有做與jQuery,它是一個對象(看起來像一個全球範圍內),所以你可以只是做

if (NWO && NWO.Chat && typeof NWO.Chat.init == 'function') { 
    NWO.Chat.init($('div').find('a.chat')); 
} 
+1

它將是'undefined',而不是 – danronmoon

+0

@danronmoon什麼是未定義的 –

+0

'$ .fn.NWO'參考之前的編輯。都很好。 – danronmoon

1

可以使用的typeof檢查對象通過將其與「不確定」比較定義或不

if(typeof NWO.Chat != 'undefined') 
0

你也可以解決你的問題的根源:

NWO.Chat = (function() { 
    return{ 
    init : function($objects) { 
    console.log('do something');   
    } } 
}  // <<-----------REMOVE THIS CURLY BRACE 
}()); 

最後的額外捲曲(})是問題所在。