Jquery | 功能在同一功能内.这是不好的做法?

m.s*_*tos 2 javascript jquery

我使用这个功能很容易,因为我将使用fadeTo:

function fade_to(div, speed, opacity, after_fade) {
    $(div).fadeTo(speed, opacity, after_fade);
}
Run Code Online (Sandbox Code Playgroud)

然后我为after_fade参数调用相同的函数:

fade_to('#div', 3000, 1, function() { fade_to('#another_div', 3000, 1)});
Run Code Online (Sandbox Code Playgroud)

这是件坏事吗?我会有速度/平滑度问题吗?使用jQuery的默认fadeTo函数更好吗?

谢谢!

小智 5

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

如果你想添加任何额外的动画或样式,你将不得不通过常规jQuery再次选择对象.额外的工作,额外的电话,没有真正的好处.


Fre*_*all 5

你的方法没有任何好处。此外,您正在使用 jQuery 淡入淡出功能。你所做的没有错,只是没有收获。例如,如果您的自定义函数中的参数较少,您可以使用这种技术节省工作:

function fade_to(div, after_fade) {
    $(div).fadeTo(3000, 1, after_fade);
}

fade_to('#div', function(){ fade_to('#another_div', $.noop); });
Run Code Online (Sandbox Code Playgroud)

这实际上可以通过防止您输入速度和不透明度参数来节省您的工作。你也可以像这样咖喱

function Fade_to(speed, opacity){
     return function(div, callback){
           $(div).fadeTo(speed, opacity, callback);
     }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样动态地创建参数保存功能

var fade_to_foo = Fade_to(3000, 1);
fade_to_foo('#div', function(){ fade_to_foo('#another_div'); });
Run Code Online (Sandbox Code Playgroud)

否则没有理由不只用 jQuery 方式编写它

$('#div').fadeTo(3000, 1, function(){ $('#another_div').fadeTo(3000, 1); });
Run Code Online (Sandbox Code Playgroud)