使用第三方插件时,我通常会在主application.js
文件中初始化它们。
示例:
$('.scroll').jScrollPane();
问题是如果页面加载没有scroll
类,那么我得到:
TypeError: Result of expression '$('.scroll').jScrollPane' [undefined] is not a function.
因此,为了解决这个问题,我将其包装成:
if ($(".scroll").length){
$('.scroll').jScrollPane();
}
这可以解决问题但只是看起来像是黑客。
有没有“正确”的解决方法?
答案 0 :(得分:2)
如果你得到:
ScrollPane' [undefined] is not a function.
...这不是因为页面没有.scroll
元素。
当未加载插件(或jQuery本身)时会发生这种错误。
如果你在几个页面上重复使用某些代码,其中一些没有该插件,请改为:
if ( $.fn.jScrollPane ){
$('.scroll').jScrollPane();
}
答案 1 :(得分:0)
你可以使用try/catch块......
try
{
$('.scroll').jScrollPane();
}
catch(err)
{
//Handle or ignore errors here
}
答案 2 :(得分:0)
$("any selector")
的调用将始终为您提供一个现成的(但是空的)jQuery对象。我认为这不是你的问题。你能描述一下你的网页在做什么吗?
答案 3 :(得分:0)
if ($('.scroll').jScrollPane()){
$('.scroll').jScrollPane();
}
这个错误很可能只是因为插件无法加载
答案 4 :(得分:0)
正如其他人所说,这个错误是jScroll的错误。如果是因为元素不存在,jQuery将返回一个空数组。
因为插件未加载。 jScroll是更改滚动条的插件,对吗?我有很多问题。我建议将其包装在
中$(window).load(function(){
//Call it here
})
这解决了我遇到的所有问题。