b. *_*eck 1 javascript jquery coding-style
我有一个相对容易的Ajax /动画,我正在添加到客户端站点以在项目之间进行选择以显示为图像.流程如下:
所有这些事情都需要同步发生,但我找不到合适的功能流程.将所有这些步骤附加到用户单击会在动画完成之前淡出pHome,并且在project1 div甚至可见之前触发'puff'效果.
事实上,我有所有这些步骤的功能,它看起来像一个真正的混乱.我要求的是构建这些函数的最佳实践方法,以便它们同步发生(可能除了2和3).就像一个援助,这是我的问题的伪代码:
$('#thumbnail').live('click', function(){
loadXML(thumbnail_id);
makeHMTL(data);
$('pHome').animate({blah}).fadeOut();
$('project1').fadeIn();
$('thumbnail_id').puff();
});
Run Code Online (Sandbox Code Playgroud)
我知道这显然是一种不好的方法 - 但我无法弄清楚如何嵌套/构造函数以使它们全部同步.而且我真的想要一个答案,让我有一些方法可以在将来构建我的功能以避免老鼠窝.教育我!:)
嵌套动画功能是一种方法,但当你做很多事情时可能会很讨厌,你很容易失去概述.
一个选项是将它们全部打包到一个对象中,并将引用传递给回调:
$('#thumbnail').live('click', animation.step1);
var animation = {
step1: function() {
$("#Element").show("puff", {}, "slow", animation.step2);
},
step2: function() {
$("#Element").hide("linear", {}, "fast", animation.step3);
},
step3: function() {
$("#Element").show("bounce", {}, 500);
}
}
Run Code Online (Sandbox Code Playgroud)
或者作为替代方案,您可以使用内置的动画队列,如下所示:
$("#go1").click(function(){
$("#block1").animate( { width:"90%" }, { queue:true, duration:100 } )
.animate( { fontSize:"24px" }, 1500 )
.animate( { borderRightWidth:"15px" }, 1500);
})
Run Code Online (Sandbox Code Playgroud)
另请查看文档:链接