You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AJAX时如何让JS在WordPress分页后仍生效

解决The Events Calendar分页AJAX后DOM操作失效的问题

The Events Calendar插件的AJAX分页有专属的事件监听机制,比全局ajaxComplete更精准,推荐用下面的方案:

方案一:使用插件原生AJAX成功事件

插件在AJAX分页完成后会触发tribe_events_ajax_success事件,直接监听这个事件就能确保分页完成后执行你的DOM操作函数:

jQuery(document).ready(function($) {
    // 页面初始加载时执行一次
    courseElements();

    // 监听插件的AJAX分页成功事件
    $(document).on('tribe_events_ajax_success', function(event, responseData) {
        // 可选:只在网格视图的分页请求后执行,避免其他AJAX请求触发
        if (responseData.view === 'grid') {
            courseElements();
        }
    });
});

方案二:优化全局ajaxComplete监听(如果坚持用全局)

如果一定要用全局的ajaxComplete,需要过滤掉无关的AJAX请求,同时加短延迟确保DOM已更新:

jQuery(document).ready(function($) {
    courseElements();

    $(document).ajaxComplete(function(event, xhr, settings) {
        // 检查请求是否属于The Events Calendar的分页动作
        if (settings.url.includes('action=tribe_events') || settings.url.includes('action=tribe_list')) {
            // 延迟100ms执行,等待插件渲染完新的网格元素
            setTimeout(() => courseElements(), 100);
        }
    });
});

关键注意事项

  • 确保courseElements()函数里的DOM选择器是每次执行时重新获取的,不要提前缓存元素(比如不要写const $courses = $('.course-item')放在函数外,要在函数内部重新获取)
  • 如果网格有加载动画,可适当调整延迟时间(比如200ms),保证元素完全渲染后再操作

内容的提问来源于stack exchange,提问作者John Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 16:43:13