我有一个使用几个JavaScript/jQuery的站点,然后我有一个default.js文件,它为每个不同的页面使用插件功能。
例如,我有一些插件包括:
然后在default.js文件中,我将执行如下操作(伪代码):
var scrolling = findScrollbarDiv;
scrolling.ScrollFunction({ options });(我的幻灯片+其他插件也是如此)
但是,如果存在一个findScrollbarDiv返回null的模板,则会得到一个错误,如下所示:
ScrollFunction不是一个函数
这并不是因为元素返回null,而是因为我没有包含这个页面的插件文件。我的理由是,我不想将每个文件都包含在每个页面上(即使不需要),因为这可能会导致不必要的HTTP请求(特别是在主页上,它只需要一个插件)。
这个错误反过来又扰乱了JavaScript的其余部分。
克服这一问题的最佳方法是什么?我是否应该将每个插件文件都包含在每个页面上,而不管是否需要它?或者,是否有类似于以下内容的JavaScript可以使用:
var scrolling = findScrollbarDiv;
if(scrolling != null) {
scrolling.ScrollFunction({ options });
}(这让我觉得有点笨重,但如果这是最好的解决方案,请告诉我)
还是使用一个默认的js文件来启动所有插件都是个坏主意?
发布于 2012-12-18 11:09:15
如果您使用的是相同的头文件,并且不介意包含该文件,那么在将事件附加到该文件之前,您可以始终检查元素是否存在。
以下是一个例子:
if(jQuery('#someElement').length > 0){
jQuery('#someElement').ScrollFunction({ options });
}或者为每个函数都有一个JavaScript文件。
所以你会有一个给画廊,一个给饼干等等。并且只包括每一页所需的内容。
发布于 2012-12-18 11:17:34
您只需将其作为条件语句执行,并在以下情况下避免出现笨拙的情况:
scrolling && scrolling.ScrollFunction({ options });这对于您想要调用的任何方法都非常有效,并且希望在此之前检查父对象是否存在。您可以更进一步(如果需要)并在执行之前检查方法本身是否存在:
scrolling && scrolling.ScrollFunction && scrolling.ScrollFunction({ options });如果滚动是一个集合,只需检查它的长度(如果长度为== 0,则语句将失败):
scrolling.length && scrolling.ScrollFunction({ options });https://stackoverflow.com/questions/13931577
复制相似问题