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

如何使用jQuery重新加载div且不生成嵌套div?

解决jQuery load方法重载div时的嵌套或清空问题

问题重现

尝试用jQuery重载指定div,初始代码如下:

function reload(param)
{
$("#divId"+param).load(location.href+" #divId"+param);
}

执行后原div内会嵌套一个同id的div;修改为以下代码后,div内容被清空:

$("#divId"+param).load(location.href+" #divId"+param+">*","";

目标div结构:

<div id="divId">
Random number : <?php echo rand(1,10); ?>
</div>

问题原因

  1. 初始代码问题:load方法会把匹配到的整个div元素插入到目标div中,而非仅插入div内的内容,因此导致同id div嵌套。
  2. 修改后代码问题:> *仅匹配目标div的子元素节点,但你的div内只有文本节点(包括PHP生成的随机数文本),没有子元素,因此没有匹配到任何内容,最终div被清空。

解决方案

方案1:利用load的回调函数提取内容

通过回调函数获取加载到的HTML,提取目标div的内部内容再替换原div:

function reload(param) {
  var targetSelector = "#divId" + param;
  $(targetSelector).load(location.href + " " + targetSelector, function(response) {
    $(this).html($(response).find(targetSelector).html());
  });
}

方案2:改用$.get请求手动提取内容

直接发起GET请求获取页面,再筛选目标div的内容进行替换:

function reload(param) {
  var targetId = "divId" + param;
  $.get(location.href, function(pageData) {
    var newContent = $(pageData).find("#" + targetId).html();
    $("#" + targetId).html(newContent);
  });
}

方案3:调整服务器返回内容(可选)

如果可以修改后端逻辑,可单独提供返回div内容的接口,避免加载整个页面再筛选:

// 假设后端有接口返回指定div的内容
function reload(param) {
  $("#divId"+param).load("/get-div-content.php?id=" + param);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:25:28