初始化插件使用 .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
慢
直接进入主题。
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
慢