我想知道在循环中定义函数的哪种方式更好?我总是使用第一种方式。这是对的吗?或者这种情况还有另一种方式吗?
请指导我,我在代码中使用了第一种方法,我想知道它是否属实?
$('.elements').each(function(){
// elements
var $t = $(this), $anotherEl = $t.find('.el2'), $anotherEl2 = $t.find('.el3');
// variables
var isVisble = $t.is(':visible'), isLand = $t.hasClass('.land');
function doSomething(){
$t.width($anotherEl.width() + $anotherEl2.width());
// other codes ...
}
doSomething();
$(window).resize(doSomething);
});
或
function doSomething(par1, par2, par3, par4){
var $t = par1 , $anotherEl = par2, $anotherEl2 = par3;
$t.width($anotherEl.width() + $anotherEl2.width());
// other codes ...
}
$('.elements').each(function(){
// elements
var $t = $(this), $anotherEl = $t.find('.el2'), $anotherEl2 = $t.find('.el3');
// variables
var isVisble = $t.is(':visible'), isLand = $t.hasClass('.land');
doSomething($t, $anotherEl, $anotherEl2, isLand);
$(window).resize(function(){
doSomething($t, $anotherEl, $anotherEl2, isLand);
});
});
感谢您提前。
答案 0 :(得分:3)
为什么要在循环中执行此操作?因为这可以在不使用循环的情况下完成:
function doSomething(){
$('.elements').each(function(){
// elements
var $t = $(this), $anotherEl = $t.find('.el2'), $anotherEl2 = $t.find('.el3');
// variables
var isVisble = $t.is(':visible'), isLand = $t.hasClass('.land');
// now do something with the vars here.
});
}
$(window).resize(doSomething).resize(); // <---trailing .resize() triggers on dom ready.
我用你的方法看到的问题是:
.each()
循环一次又一次地定义相同的函数,在每次迭代中执行相同的函数和绑定resize
事件。.resize
绑定。