这个函数是否执行:jQuery(“。class”)。function();如果在此页面上找不到该课程?

时间:2014-02-18 04:39:25

标签: javascript jquery

只是一个简单的问题。

我想知道如果页面上没有.banner类,在下面的代码中是否会运行unslider()?

  

的jQuery( “横幅广告”)unslider();

我不希望它在没有.banner类的页面上运行。

我是否需要做类似

的事情
  

if(jQuery(“。banner”)> 0){    jQuery的( “大旗”。)unslider()。   }

4 个答案:

答案 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(); 
}