我似乎经常编写类似于这样的模式的jQuery代码: 淡出==做一些幕后故事==淡入 如下图所示: /// reference path="jquery-1.4.2.js" //// reference path="jquery-1.4.2-vsdoc.js" //// reference path="jquery.validate-v
淡出==>做一些幕后故事==>淡入
如下图所示:
/// <reference path="jquery-1.4.2.js" /> /// <reference path="jquery-1.4.2-vsdoc.js" /> /// <reference path="jquery.validate-vsdoc.js" /> var fade = "slow"; $(document).ready(function () { // Some event occurs $("#Trigger").change(function () { var id = $(this).find(":selected").val(); // Fade out target while I do something $("#Target").fadeOut(fade, function () { if (id != "") { // Do Something $("#Target").load( "/Site/Controller/Action/"+id, null, function () { // Fade in Target $("#Target").fadeIn(fade); }); } }); }); });
这工作正常,但回调层次结构变得非常深,我只是想知道是否有更简单的方法来做这个或更好的技术,不会导致这么多级别的回调
使用 jQuery’s.queue
$("#Target") .fadeOut() .queue(function() { if (id != "") // Do Something $(this).load( "/Site/Controller/Action/"+id, null, $(this).dequeue ); else $(this).dequeue(); }) .fadeIn()