javascript - 如何使用 Ajax 淡入/淡出函数的计时问题

标签 javascript jquery

我认为这是一个时间问题......

我有选项卡更改,每次选项卡更改时都会重新加载新项目列表(通过 get_list 函数)。

“get_list”函数加载项目列表。在项目中,有一些 class='details'。这些详细信息可以隐藏或显示,具体取决于复选框是否选中。列表项会加载,但详细信息不受复选框状态的影响。我怀疑是因为加载的时机发生在执行fadeIn/fadeOut之后。

如果是这样,如何才能使其发挥作用 - 在执行淡入淡出之前是否可以合并延迟?或者有代码在执行淡入淡出之前检查列表是否已加载?

console.log 验证项目的更改和状态是否正确。 当我手动单击复选框时,淡入/淡出(在另一个脚本中)起作用。

代码如下:

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
   tab = e.target.id // newly activated tab
   get_list(my_feedback,user_id,status,tab,feedback_limit,feedback_start);
   console.log(tab);  
    if($('#hide_details').is(":checked")){//show various details
        console.log('is checked');
        $('.details').fadeIn();
        $('.link-no-blue').addClass('no-link').removeClass('link-no-blue');
    }else{//hide various details
        console.log('is NOT checked');
        $('.details').fadeOut();
        $('.no-link').addClass('link-no-blue').removeClass('no-link');
    }
});

典型的 HTML:

<p class="details" style="margin:0px;"><strong>hotmail</strong><font color="#adb2ba">&nbsp;&nbsp;March 9, 2020&nbsp;&nbsp;User: 30</font>
    <span>&nbsp;&nbsp;&nbsp;<font color="#adb2ba">ID:124/features</font></span>
    <span style="float:right;"><span class="link edit_link" data-id="124">Edit</span>&nbsp;&nbsp;&nbsp;&nbsp;<span><strong>Status: </strong>New</span>
    </span></p>

get_list 函数:

function get_list( my_feedback,user_id,status,tab, feedback_limit, feedback_start ){
    $.ajax({
        url:"/modules/feedback/feedback_ajax_list.php",
        method:"POST",
        data:{action:'get_list',
              my_feedback:my_feedback,
              user_id:user_id,
              status:status,
              tab:tab,
              feedback_limit:feedback_limit,
              feedback_start:feedback_start
            },
        success:function(data){
              //console.log(data);
              $("#data").append(data).hide().fadeIn(500);
        }
    }); 
}

最佳答案

通过将复选框显示/隐藏放置在 get_list 函数的 Ajax 部分来解决。使用显示/隐藏来代替,因为我已经在列表结果中淡出:

function get_list( my_feedback,user_id,status,tab, feedback_limit, feedback_start ){
        $.ajax({
            url:"/modules/feedback/feedback_ajax_list.php",
            method:"POST",
            data:{action:'get_list',
                  my_feedback:my_feedback,
                  user_id:user_id,
                  status:status,
                  tab:tab,
                  feedback_limit:feedback_limit,
                  feedback_start:feedback_start
                },
            success:function(data){
                //console.log(data);
                $("#data").append(data).hide().fadeIn(500);
                //show or hide details depending on the checkbox
                if($('#hide_details').is(":checked")){//show various details
                    console.log('is checked');
                    $('.details').show();
                    $('.link-no-blue').addClass('no-link').removeClass('link-no-blue');
                }else{//hide various details
                    console.log('is NOT checked');
                    $('.details').hide();
                    $('.no-link').addClass('link-no-blue').removeClass('no-link');
                }
            }
        }); 
    }

不需要更改或添加 Async: false 到 ajax,似乎按原样工作得很好

关于javascript - 如何使用 Ajax 淡入/淡出函数的计时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60662130/

相关文章:

javascript - 动态创建 Canvas 并设置宽度和高度时字体太小

javascript - 在 javascript 函数执行时加载屏幕

javascript - 用于动态字符计数的 Jasmine 单元测试用例

javascript - 使用 jQuery 或 JavaScript 绑定(bind)到自定义 CSS 动画结束事件?

javascript 'if' 未从 ajax 捕获 null

javascript - 内容更改时重新居中 div

javascript - 如何在 Ionic 应用程序中删除此空间

javascript - 两个 Key Up 事件,我需要将这两个事件的数据放入这些事件之外的两个变量中

javascript - 为什么我的 JavaScript 函数无法访问在我的其他 .js 文件中定义的全局范围函数/变量?

javascript - JQuery - 获取 <p>太多溢出!</p> 的 .x .y 坐标,然后 move <div>