jQuery - 检查函数是否已定义

时间:2013-12-21 03:12:55

标签: javascript jquery

我不能为我的生活弄清楚如何做到这一点。我的jquery名称以某种方式间隔,因为它以NWO。{function-name}作为前缀,使其更有条理。所以它看起来像这样:

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错误。我一直在敲打几个小时。提前谢谢。

3 个答案:

答案 0 :(得分:5)

NWO不是jQuery插件,所以与jQuery无关,它是一个对象(看起来像一个全局范围),所以你可以这样做

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

答案 1 :(得分:1)

您可以使用typeof通过将对象与“undefined”

进行比较来检查对象是否已定义
if(typeof NWO.Chat != 'undefined')

答案 2 :(得分:0)

您还可以修复问题的根源:

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

结尾处有额外的卷曲(})是个问题。