Хорошо, мой заголовок немного запутан, но в основном, у меня есть функция, и после того, как эта функция завершена, она должна выполнить указанные шаги. Вот мой 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);
}
Добавьте параметр обратного вызова, и если он существует, вызовите его в конце:
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();
});
}
fadeIn
.
createSideTable
вызывает обратный вызов? Можете ли вы опубликовать код этой функции?