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

动态添加的类在jQuery .load中失效,如何正确实现重载?

问题根源与解决方案

你的问题核心在于:动态添加的testrefresh类只存在于前端DOM中,服务器返回的HTML页面里并没有这个类。当你用$('.testrefresh').load(location.href + " .testrefresh > *")时,第二个参数是在服务器返回的HTML中查找.testrefresh元素的子内容,但服务器端根本没输出这个类,自然找不到内容,导致加载为空。而固定类是后端硬编码的,服务器返回的HTML里有这个类,所以能正常匹配。

修复步骤

1. 修正点击事件的targetID获取逻辑

你原来的代码中,var targetID = $('.clickfield').data('id')只会取第一个.clickfield的data-id,如果有多个元素会失效。改成点击时取当前元素的data-id:

(function($){
  $(document).ready(function() {
    $('.clickfield').click(function() {
      // 取当前点击元素的data-id,确保每个clickfield对应正确的refreshdiv
      var targetID = $(this).data('id');
      var $refreshDiv = $('.refreshdiv' + targetID);
      if (!$refreshDiv.hasClass("testrefresh")) {
        $refreshDiv.addClass("testrefresh");
      }
    });
  });
})(jQuery);

2. 修改load的选择器,依赖后端存在的固定标识

不要用动态类作为服务器端的选择器,改用后端输出的固定标识(比如元素ID、固定类、data属性)。假设你的refreshdiv有后端生成的ID(比如refreshdiv123),修改ajaxComplete中的逻辑:

(function ($) {
  $(document).ready(function () {
    $(document).on('click', '.formsubmitaction form .form-submit', function(){});
    
    $(document).ajaxComplete(function (event, xhr, settings) {
      if (typeof settings !== 'undefined' && settings.extraData && settings.extraData._drupal_ajax) {
        // 遍历所有带testrefresh类的元素
        $('.testrefresh').each(function() {
          var $currentDiv = $(this);
          // 用元素的ID(后端生成的固定标识)去服务器返回的HTML中找对应内容
          var targetSelector = '#' + $currentDiv.attr('id');
          $currentDiv.load(location.href + targetSelector + " > *");
        });
      }
    });
  });
})(jQuery);

如果你的refreshdiv没有ID,也可以用后端硬编码的固定类(比如原来的refreshdiv类),或者自定义的data属性(比如后端给元素加data-target-id="XXX"),只需要把targetSelector换成对应的选择器即可,比如:

// 用固定类
var targetSelector = '.refreshdiv' + $currentDiv.data('target-id');

这样修改后,就能从服务器返回的HTML中正确找到对应元素的子内容,加载到动态添加了testrefresh类的div里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:43:22