我使用此功能是为了方便,因为我将使用fadeTo:
function fade_to(div, speed, opacity, after_fade) {
$(div).fadeTo(speed, opacity, after_fade);
}
然后我为after_fade参数调用相同的函数:
fade_to('#div', 3000, 1, function() { fade_to('#another_div', 3000, 1)});
这是一件坏事吗?我会有速度/平滑度问题吗? 使用jQuery的默认fadeTo函数会更好吗?
谢谢!
答案 0 :(得分:5)
这是一种不好的做法,因为如果不将它们应用于调用函数的每个实例,就不能使用任何修饰符。既然你可以在jQuery中链接修饰符,并且大多数人都同意这样做是一个有用的功能,那么你就会为自己或者在这个代码体上工作的任何人禁用这个有用的功能。
如果您想添加任何其他动画或样式,则必须通过常规jQuery再次选择该对象。额外的工作,额外的电话,没有真正的好处。
答案 1 :(得分:4)
您的方法无法获得收益。另外,您正在使用jQuery fadeTo功能。你做了什么没有错,只是没有收获。如果您的自定义函数中的参数较少,则可以使用这种技术保存工作:
function fade_to(div, after_fade) {
$(div).fadeTo(3000, 1, after_fade);
}
fade_to('#div', function(){ fade_to('#another_div', $.noop); });
这实际上可以防止你输入速度和不透明度参数来节省你的工作。你也可以像这样讨价还价
function Fade_to(speed, opacity){
return function(div, callback){
$(div).fadeTo(speed, opacity, callback);
}
}
然后你可以像
那样动态地创建参数保存函数var fade_to_foo = Fade_to(3000, 1);
fade_to_foo('#div', function(){ fade_to_foo('#another_div'); });
否则没有理由不用jQuery方式写它
$('#div').fadeTo(3000, 1, function(){ $('#another_div').fadeTo(3000, 1); });
答案 2 :(得分:1)
您的方法很方便。我怀疑它会减缓淡化效果。在我看来,这种方法没有任何问题。如果您决定在淡入淡出之前你的淡入淡出效果应该脉冲或闪烁,你只需要修改你的函数来脉冲/闪烁,然后淡化所有对淡入淡出的调用然后运行新的例程。在这种情况下,它有意义,因为它减少了代码并提高了可维护性。 Ericosg确实提出了一个有效的观点,但为什么不减少参数,如果他们将是相同的。
答案 3 :(得分:1)
这种做法违背了将jQuery用作可链接的短语法库的目标。但是,如果此特定功能对项目有用,则可能有效。
答案 4 :(得分:1)
麦克,
我不知道这一定是一个'坏'的事情,因为它可能提供更容易的可用性或某些东西(不确定,因为我不知道你的例子的上下文)使用标准函数否则,在API中给出。
实际上,有一个函数调用本身就是在CS中使用一个名为'recursion'的想法,它可以用于遍历树(你可以谷歌两次递归,树可以更好地了解我在这里指的是什么) ,或执行某种数学运算(即欧几里德算法)。
我想说,如果你这样做,那么问“为什么”是个好主意。你不会在速度方面获得任何东西,因为你将参数传递了额外的时间,而且与API的实现(至少我看到的)相比,你的功能没有完成任何额外的工作。如果你要养成这个习惯...让我们说更多 计算上征税的功能......你可能会注意到减速。
我希望不要在这里回答你的问题,而是要进一步了解为什么这样做通常是一个坏主意。我同意dunsmoreb和Thomasdotnet。好点!
-sf
答案 5 :(得分:1)
最好只使用jQuery的默认fadeTo功能。就是这个。