好吧我的标题有点混乱,但基本上,我有一个函数,在该函数完成执行后,它应该执行给定的步骤。这是我的javascript:
createSideTable(showThis, function() {
$('#' + showThis + 'Screen').slideDown('slow');
});
我希望createSideTable函数在步骤
之前运行它的所有代码$('#' + showThis + 'Screen').slideDown('slow');
可以执行。 createSideTable或多或少只会使边桌缓慢淡入。该功能可以在本文末尾看到。 通常,当我有一个我想要执行所有步骤然后执行其他给定步骤的函数时,我会这样做
createSideTable(function() {
$('#' + showThis + 'Screen').slideDown('slow');
});
然而,它的工作原理是,createSideTable函数需要一个参数(它需要的参数是showThis)。所以当我尝试
时createSideTable(showThis, function() {
$('#' + showThis + 'Screen').slideDown('slow');
});
它确实创建了sideTable,但这一步
$('#' + showThis + 'Screen').slideDown('slow');
在创建sideTable后没有执行。怎么会? 这是我的createSideTable函数。
function createSideTable(test) {
var key = test.substr(test.length -1); //index of Heading
for (var i=0; i<window['headings' + key].length; i++) {
if (i == 0) {
$('#row' + i).addClass('subHeadingClicked');
}
$('#row' + i).text('').removeClass('column1invisible');
$('#row' + i).append(window['headings' + key][i]);
}
$('#sideTable').fadeIn(1500);
}
答案 0 :(得分:3)
添加回调参数,如果存在,请在结尾处调用:
function createSideTable(test, callback) {
var key = test.substr(test.length -1); //index of Heading
for (var i=0; i<window['headings' + key].length; i++) {
if (i == 0) {
$('#row' + i).addClass('subHeadingClicked');
}
$('#row' + i).text('').removeClass('column1invisible');
$('#row' + i).append(window['headings' + key][i]);
}
$('#sideTable').fadeIn(1500);
if (callback) callback();
}
你应该可以这样称呼它:
createSideTable(showThis, function() {
$('#' + showThis + 'Screen').slideDown('slow');
});
编辑 -
第一个例子展示了回调是如何工作的。您可以随时执行回调...例如,如果您希望在fadeIn()
之后执行回调,则可以执行此操作:
function createSideTable(test, callback) {
var key = test.substr(test.length -1); //index of Heading
for (var i=0; i<window['headings' + key].length; i++) {
if (i == 0) {
$('#row' + i).addClass('subHeadingClicked');
}
$('#row' + i).text('').removeClass('column1invisible');
$('#row' + i).append(window['headings' + key][i]);
}
$('#sideTable').fadeIn(1500, function() {
if (callback) callback();
});
}