为了确保在获取第一个 li 元素之前,页面完全渲染好,避免页面元素还未渲染完毕时就获取元素

为了确保在获取第一个 li 元素之前,页面完全渲染好,避免页面元素还未渲染完毕时就获取元素,您可以使用 setTimeout() 延迟执行代码,或者使用 MutationObserver 来观察 DOM 的变化,直到页面内容完全加载并渲染好后再执行操作。
方案1:使用 setTimeout() 延迟执行
这种方式是通过延迟执行代码来确保页面渲染完成。你可以尝试如下修改:
$(document).ready(function () {
    // 使用setTimeout延迟执行,确保页面内容完全渲染
    setTimeout(function () {
        var firstLi = $('#list_records li').first(); // 获取第一个li元素
        var shareCode = firstLi.data('code'); // 获取第一个li的shareCode
        that.exerciseResultAnalysis(shareCode); // 传递shareCode进行分析

        // 如果你还需要手动触发点击事件,使用trigger('click')
        firstLi.trigger('click');
    }, 100); // 100ms 延迟,可根据需要调整时间
});

方案2:使用 MutationObserver(更精确的解决方案)
如果页面的内容是动态加载的(比如通过 AJAX 请求或者动态渲染的组件),可以使用 MutationObserver 来观察 DOM 变化,确保在特定元素加载完成后再执行后续操作。
$(document).ready(function () {
    // 创建MutationObserver来监控 DOM 变化
    const observer = new MutationObserver(function (mutations) {
        // 检查 #list_records 是否渲染完毕
        if ($('#list_records li').length > 0) {
            // 页面中至少有一个 li 元素,开始执行操作
            var firstLi = $('#list_records li').first(); // 获取第一个li元素
            var shareCode = firstLi.data('code'); // 获取第一个li的shareCode
            that.exerciseResultAnalysis(shareCode); // 传递shareCode进行分析

            // 如果你还需要手动触发点击事件,使用trigger('click')
            firstLi.trigger('click');

            // 停止观察
            observer.disconnect();
        }
    });

    // 配置观察选项
    const config = {
        childList: true,  // 观察子元素的变化
        subtree: true     // 观察整个子树
    };

    // 启动观察,观察整个document.body
    observer.observe(document.body, config);
});

解释:

1.setTimeout() 延迟执行:延迟 100 毫秒执行,等待 DOM 渲染完成。可以根据需要调整延迟时间。
2.MutationObserver:通过监听 DOM 变化,确保 #list_records 元素中的 li 渲染完成后再执行后续操作。这个方法适用于动态加载内容的场景。

选择哪个方法取决于你的具体需求。如果页面内容是动态加载的,使用 MutationObserver 更加精确;如果只是简单的渲染延迟,使用 setTimeout() 延迟执行即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值