3

我使用这个函数是为了方便,因为我会经常使用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函数会更好吗?

谢谢!

4

6 回答 6

5

这是一种不好的做法,因为如果不将它们应用于调用函数的每个实例,就不能再使用任何修饰符。由于您可以在 jQuery 中链接修饰符,并且大多数人都同意这样做是一个有用的功能,因此您正在为自己或其他任何处理此代码体的人禁用该有用的功能。

如果您想添加任何额外的动画或样式,这次您必须通过常规 jQuery 再次选择对象。额外的工作,额外的电话,没有真正的好处。

于 2012-04-09T16:25:59.907 回答
5

用你的方法没有任何收获。另外,您正在使用 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); });
于 2012-04-09T16:29:59.270 回答
1

你的方法很方便。我怀疑它会减慢褪色效果。在我看来,这种方法没有错。如果你决定你的淡入淡出效果应该在淡入淡出之前脉冲或闪烁,你只需将你的函数修改为脉冲/闪烁,然后淡出所有对淡入淡出的调用,然后运行新的例程。在这种情况下,它是有意义的,因为它减少了代码并提高了可维护性。Ericosg 确实提出了一个有效的观点,但如果它们是相同的,为什么不减少参数。

于 2012-04-09T16:25:18.580 回答
1

这种做法与将 jQuery 用作可链接的、短语法库的目标背道而驰。但是,如果此特定功能对项目有用,则可能会有效。

于 2012-04-09T16:30:25.527 回答
1

麦克风,

我不知道这一定是一件“坏”的事情,因为它可能会提供更容易的可用性或某些东西(不确定,因为我不知道你的例子的上下文)使用给出的标准函数否则 API 不会。

实际上,有一个函数调用本身就是在使用 CS 中一个叫做“递归”的想法,这对于遍历树很有用(你可以用谷歌搜索递归和树来更好地了解我在这里指的是什么),或者执行某种数学运算(即欧几里得算法)。

我想说,如果你这样做,问“为什么”是个好主意。由于您将参数传递了额外的时间,因此您不会在速度方面获得任何收益,并且与 API 的实现相比,您的函数没有完成任何额外的事情(至少我所看到的)。如果您要养成这种习惯...假设使用计算量更大的功能...您可能会注意到速度变慢。

我希望不仅在这里回答您的问题,还希望让您进一步了解为什么这样做通常是一个坏主意。我同意 dunsmoreb 和 Thomasdotnet 的观点。好点!

-sf

于 2012-04-09T16:31:52.587 回答
1

最好只使用jQuery 的默认fadeTo 函数。只是这个。

于 2012-04-09T16:45:59.980 回答