指向主题。
人们使用代码初始插件如下:
$(".whatever").each(function(){
$(this).initplugin;
// blah blah blah... stuff
})
并且人们B使用代码来初始化插件:
$(".else").initplugin();
那么,上面的代码有什么区别? 在内存使用方面, 在简单的用法中, 或者你的理由..
对不起我在JS新手。
答案 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慢