gpt4 book ai didi

jquery - 让 Jquery 函数等待动画完成

转载 作者:行者123 更新时间:2023-12-01 00:31:28 25 4
gpt4 key购买 nike

我知道这个问题已经被问了很多,但我似乎仍然找不到答案。我的标题中有两个单独的 div,当单击其中一个时,它会在页面的主要部分中淡入一些内容。我正在尝试这样做,以便如果已经单击了一个,则新的必须等待旧的淡出才能淡入。我的问题是,它不等待旧的淡出,而是在右侧淡入离开。我省略了 page_2 的函数,但它们是相同的,只是交换了适当的标识符和变量。

var about_me_clicked = false;
var page_2_clicked = false;

$(document).ready(function() {
$('#About_me').click(about_me_clicked_func);
$('#Page_2').click(page_2_clicked_func);

var about_me_clicked_func = function() {
if(page_2_clicked){
$.when(toggle_page_2()).done(toggle_about_me());
page_2_clicked = !page_2_clicked;
}
else toggle_about_me();
about_me_clicked = !about_me_clicked;
}

var toggle_about_me = function() {
//do some formatting....
if (!about_me_clicked) {
return $('#About_me_main').fadeIn('slow').promise();
}
else return $('#About_me_main').fadeOut('slow').promise();

我尝试只使用 .done() 而不使用 $.when() ,但这也不起作用。我还尝试对 fadeIn/fadeOut 使用回调/完整函数,但我不能这样做,因为在某些情况下,两者都没有被单击(当页面首次加载时),因此我无法传递另一个函数。任何帮助将不胜感激,我已经坚持了好几天了!

最佳答案

您可以检查某个元素当前是否正在动画:

if($('#About_me_main').is(':animated'))

或者简单地stop()任何正在进行的动画并清除队列:

$('#About_me_main').stop(true).fadeIn('slow');

关于jquery - 让 Jquery 函数等待动画完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20915438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com