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

AJAX调用后jQuery设置的样式消失问题的排查与解决咨询

问题说明

我希望通过jQuery给产品颜色筛选器设置的样式,在AJAX请求完成后依然能生效。当前筛选器有「应用筛选」和「清除筛选」两个操作选项,只要点击任意一个选项,之前通过jQuery设置的样式就会失效。
我最初尝试用ajaxComplete函数解决这个问题,但实际测试后没有生效。

原有实现代码
add_action( 'wp_head', function () { ?>

    <script>
       var my_colours = function ( $ ) {            
          
       jQuery('.bapf_body ul > li').each(function() {
        var getCol = jQuery('input', jQuery(this)).data('name');
        var imageUrl = "https://website/wp-content/uploads/2021/10/" + getCol + ".jpg";
       jQuery(".bapf_img_span", jQuery(this)).css('background-image', 'url("' + imageUrl + '")');
        console.log('CSS background-image =', jQuery(".bapf_img_span", jQuery(this)).css('background-image'));  
});
       }
</script>
<?php }, 5 ); 

add_action( 'wp_footer', 'cv_theme_custom_script', 999999 );
function cv_theme_custom_script() { ?>
<script>
    jQuery( document ).ready( function ( $ ) {
        my_colours( $ );
    } );
</script>
<?php
}


add_action( 'wp_head', function () { ?>
    <script>
    
    $.ajaxComplete(function () {
        // trigger the other JS snippet again after AJAX.
        my_colours( $ );
    });
    
    </script>
    <?php }, 9999999 );
修复方案

问题出在ajaxComplete的调用格式不符合规范:

  1. jQuery的ajaxComplete事件需要绑定到document对象上,才能全局监听所有AJAX请求完成事件
  2. WordPress默认开启jQuery无冲突模式,直接使用$别名会因为未定义导致脚本报错失效
    正确写法如下:
jQuery( document ).ajaxComplete(function () {
    // AJAX请求完成后重新执行样式设置逻辑
    my_colours( jQuery );
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:15:04