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

Ajax success回调函数中指定类被添加到所有搜索结果元素问题求解

问题原因

  • 你将外层容器<div id="tags-browser" class="grid-layout">写在了for循环内部,每遍历一条搜索结果就会完整插入一次「外层容器+单条结果」的结构,自然会生成多个重复的外层容器。
  • 额外注意:HTML规范中id为全局唯一标识,你原有静态HTML里已经存在id="tags-browser"的元素,动态生成内容重复使用同一个id属于语法错误,会导致后续DOM操作出现异常。

修复方案

调整success回调的拼接逻辑,外层容器仅在循环外生成一次,循环内仅拼接单条搜索结果的内容,修改后的完整JS代码如下:

$('#id_search_tag').keyup(function(e) {
  $.ajax({
    url: "{% url 'searchTag' %}",
    data: {
      'w': $('#id_search_tag').val(),
    },
    method: 'get',
    dataType: 'json',
    success: function(response) {
      // 先清空原有搜索结果,不需要清空可删除此行
      $('#tags_list').empty();
      // 外层容器仅在循环外定义一次
      let resultHtml = `<div class="grid-layout">`;
      // 循环仅拼接单条搜索结果的结构
      for (result of response.results) {
        resultHtml += `
            <div class="mySearchedTags">
                   <div class="d-flex jc-space-between ai-center mb12">
                    <div class="flex--item">
                        <a href="/answers/tag/tag" class="post-tag" >${result.tagName}</a>
                    </div>
                </div>
            </div>
        `;
      }
      // 闭合外层容器标签
      resultHtml += `</div>`;
      // 一次性插入到页面中
      $('#tags_list').prepend(resultHtml);
    }
  })
})

注:上述代码去掉了重复的id="tags-browser"属性,如果需要保留标识可以改为class属性,或者修改为不重复的id值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:54:03