init插件使用.each和select.initplugin有什么不同?

时间:2015-01-19 04:54:22

标签: javascript jquery plugins init

指向主题。

人们使用代码初始插件如下:

 $(".whatever").each(function(){
   $(this).initplugin;
   // blah blah blah... stuff
})

并且人们B使用代码来初始化插件:

$(".else").initplugin();

那么,上面的代码有什么区别? 在内存使用方面, 在简单的用法中, 或者你的理由..

对不起我在JS新手。

1 个答案:

答案 0 :(得分:0)

两者都有相同的结果。如果你需要一些条件,让我们说你想要只为一个具有相同类的项排除插件,那么第一个选项会更好,因为你可以用它包装代码:

$(".whatever").each(function()
{
    if(somecondition)
    {  
       $(this).initplugin;
    }

   // blah blah blah... stuff
});

否则,按类选择器应用插件就可以了。

$(".else").initplugin();

至于性能,与两者一起使用JQuery不应该有太大的区别

.each函数只是这样做:

function (obj, callback, args) {
var value, i = 0,
    length = obj.length,
    isArray = isArraylike(obj);

if (args) {
    if (isArray) {
        for (; i < length; i++) {
            value = callback.apply(obj[i], args);

            if (value === false) {
                break;
            }
        }
    } else {
        for (i in obj) {
            value = callback.apply(obj[i], args);

            if (value === false) {
                break;
            }
        }
    }

    // A special, fast, case for the most common use of each
} else {
    if (isArray) {
        for (; i < length; i++) {
            value = callback.call(obj[i], i, obj[i]);

            if (value === false) {
                break;
            }
        }
    } else {
        for (i in obj) {
            value = callback.call(obj[i], i, obj[i]);

            if (value === false) {
                break;
            }
        }
    }
}

return obj;
}

取自:http://james.padolsey.com/jquery/#v=2.0.3&fn=jQuery.each

至于在第二种情况下将插件应用于每个类,我不是100%确定在那里发生了什么,但它仍然是JQuery并确保JQuery总是比使用原始JavaScript慢