只是一个简单的问题。
我想知道如果页面上没有.banner类,在下面的代码中是否会运行unslider()?
的jQuery( “横幅广告”)unslider();
我不希望它在没有.banner类的页面上运行。
我是否需要做类似
的事情if(jQuery(“。banner”)> 0){ jQuery的( “大旗”。)unslider()。 }
答案 0 :(得分:2)
是的,它运行并执行以下(source):
$.fn.unslider = function(o) {
var len = this.length;
// Enable multiple-slider support
return this.each(function(index) {
// Cache a copy of $(this), so it
var me = $(this);
var instance = (new Unslider).init(me, o);
// Invoke an Unslider instance
me.data('unslider' + (len > 1 ? '-' + (index + 1) : ''), instance);
});
};
所以它会对你的收藏品进行.each()
。
但是,如果该集合为空,则传递给.each()
的函数将不会运行,因此“不太多”将最好地描述如果您运行$('.banner').unslider();
.length
检查来“优化”它是没有意义的。
答案 1 :(得分:0)
不,如果找不到元素,它将不会被执行。
将调用插件方法,但由于没有与选择器匹配的元素,因此它不应该做任何事情 - 但它又取决于插件的实现方式
答案 2 :(得分:0)
如果class
不可用,通常不会执行后续操作,但进行初步检查会更安全。
你必须喜欢这个,
if(jQuery(".banner").length > 0){ jQuery(".banner").unslider(); }
或者
if(jQuery(".banner").length){ jQuery(".banner").unslider(); }
答案 3 :(得分:0)
您需要使用length
属性来检查元素是否存在。
if (jQuery(".banner").length > 0)
{
jQuery(".banner").unslider();
}
您甚至不需要检查它是否大于零。
if (jQuery(".banner").length)
{
jQuery(".banner").unslider();
}