初始化插件使用 .each 和 selector.initplugin 之间有什么区别?

What different between init plugin use .each and just selector.initplugin?

直接进入主题。

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

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

B 人使用代码来初始化插件,如下所示:

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

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

对不起,我是 JS 新手。

两者的结果相同。如果您需要一些条件,假设您只想排除具有相同 class 的其中一个项目的插件,那么第一个选项会更好,因为您可以在其周围包装代码:

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

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

否则通过 class 选择器应用插件就可以了。

$(".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.

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