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

无法修改<template>中首个div元素的ID问题求助

解决jQuery克隆模板无法修改根div ID的问题

我来帮你搞定这个问题!你现在遇到的核心问题是对jQuery对象的层级理解有误——你用find("div:first")找的是模板根div的子元素,而不是根div本身,所以才会修改到后面的div。

问题原因分析

你当前的代码里:

const $template = $( $('#single_feed')[0].innerHTML );

这行把模板的HTML字符串转换成了jQuery对象,这个对象直接包含的就是模板里的根div(也就是带FIRST_DIV ID的那个.ibox元素)。而find("div:first")是在这个根div的后代元素里查找第一个div,自然会定位到.ibox-title那个子div,而不是你想要修改的根元素。

解决方案1:直接修改根jQuery对象

只需要把find("div:first")去掉,直接操作$template本身即可:

$(".btn-RSS-single").click(function(e) {
  var idClicked = e.target.id;
  // 获取模板HTML并转为jQuery对象,此时$template就是根div
  const $template = $( $('#single_feed')[0].innerHTML );
  // 直接修改根div的ID
  $template.attr("id", "NEW_ID_"+idClicked);
  $('#kolona_1').append($template);
});

解决方案2:使用标准模板克隆API(更推荐)

HTML5的<template>元素有专门的content属性和克隆方法,这种方式更规范可靠,避免innerHTML可能带来的问题:

$(".btn-RSS-single").click(function(e) {
  var idClicked = e.target.id;
  // 获取模板元素
  const template = document.getElementById('single_feed');
  // 深克隆模板内容(true表示深拷贝)
  const templateContent = document.importNode(template.content, true);
  // 转为jQuery对象后修改根div的ID
  const $template = $(templateContent);
  $template.find('.ibox').attr("id", "NEW_ID_"+idClicked);
  // 或者用children().first()定位根div:$template.children().first().attr(...)
  $('#kolona_1').append($template);
});

这两种方式都能精准修改你想要的那个根div的ID,你可以根据自己的习惯选择其中一种。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:37:37