Я не знаю, можно ли это сделать, но я думаю, что это...
Сначала я подумал, что это может быть что-то не так со всем моим скриптом, и мне удалось создать новый файл на localhost и проверить только fadeOut();
функция.
По-видимому, он снова вернулся к функции снова, поэтому я пошел в jsfiddle, чтобы проверить, что там будет. То же самое произошло. В этом случае console.log();
вернулся дважды.
Ну, я хочу вернуть указанную функцию или в образец console.log();
, указанный console.log();
только один раз. Однако я угасаю несколько элементов (два, если быть точным).
Есть ли способ сделать это, вместо того, чтобы одновременно дублировать каждый элемент на fadeOut?
Пример, который будет возвращать console.log(); дважды.
setTimeout(function () {
$( ".one, .two" ).fadeOut(300, function () {
console.log("Return Function!");
});
}, 2000);
Пример, который будет возвращать console.log(); один раз.
setTimeout(function () {
$( ".one" ).fadeOut(300);
$( ".two" ).fadeOut(300, function () {
console.log("Return Function!");
});
}, 2000);
Предварительный просмотр скрипта : перенаправление скрипта
В коллекции есть два элемента, поэтому fadeOut
вызывается дважды, поэтому да, он должен это делать.
Вы можете иметь огонь обратного вызова только один раз, независимо от количества элементов в коллекции, используя возвращенное обещание от анимации и $.when
и $.then
setTimeout(function () {
$.when( $( ".one, .two" ).fadeOut(300) ).then(function () {
console.log("Return Function!");
});
}, 2000);
Возможно, достаточно простого флага? Особенно, если вы хотите войти в консоль, как только первая была сделана (по какой-либо причине):
var already_returned = false;
setTimeout(function () {
$( ".one, .two" ).fadeOut(300, function () {
if (!already_returned) {
already_returned = true;
console.log("Return Function!");
}
});
}, 2000);
Вам нужно увидеть свой HTML-код, но мне кажется, что у вас может быть несколько элементов, назначенных с классом "два", что объясняет, почему во втором примере вы должны исходить из двух строк журнала...
В первом примере вы можете (и, вероятно,) выбрать 2 элемента (один с классом "один", а другой с классом "два").
Я проверил это из любопытства, и моя консоль показывает два разных объявления javascript:
Return Function! fiddle.jshell.net/dvLden/ApUYq/show/:38
Return Function! fiddle.jshell.net:38
Видимо, скрипка проходит дважды. если вы перейдете на страницу http://fiddle.jshell.net/dvLden/ApUYq/show/:38, вы получите только одну "функцию возврата" в своей консоли.
$( ".one, .two" ).fadeOut(300).promise().done(function(){...
та же концепция