我不能为我的生活弄清楚如何做到这一点。我的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错误。我一直在敲打几个小时。提前谢谢。
答案 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
}());
结尾处有额外的卷曲(}
)是个问题。