Javascript 在将HTML字符串附加到DOM之前,使用jQuery操作HTML字符串

Javascript 在将HTML字符串附加到DOM之前,使用jQuery操作HTML字符串,javascript,jquery,Javascript,Jquery,我试图有条件地从JS函数中构建的HTML字符串中删除一个类 请注意,在live项目中,表中的值和行中的值都会根据AJAX调用进行更改。在这里,使用硬编码值就足以证明这个问题 为什么不删除彩色类 var行=2; var table=“第1AB列”; if(rows),因为该表尚未附加到DOM 如果在移除类之前将$(“body”).append(table)移动到,它将按预期工作: var行=2; var table=“第1AB列”; $(“正文”)。附加(表格); 如果(行如果您有权访问将添加

我试图有条件地从JS函数中构建的HTML字符串中删除一个类

请注意,在live项目中,表中的值和
行中的值都会根据AJAX调用进行更改。在这里,使用硬编码值就足以证明这个问题

为什么不删除
彩色

var行=2;
var table=“第1AB列”;

if(rows),因为该表尚未附加到DOM

如果在移除类之前将
$(“body”).append(table)
移动到,它将按预期工作:

var行=2;
var table=“第1AB列”;
$(“正文”)。附加(表格);

如果(行如果您有权访问将添加的html,您应该编辑它。下面是一个如何进行编辑的示例:

const helperDiv=document.createElement(“div”);
函数removeClass(html、classToRemove){
helperDiv.innerHTML=html;
for(helperDiv.querySelectorAll(`.${classToRemove}`)的var-dom)dom.classList.remove(classToRemove);
返回helperDiv.innerHTML;
}

log(removeClass(“,”彩色“))基本上,你的主要问题是你不能针对一个不在DOM上的元素。一种解决方法是先将它附加到主体上,然后像另一个答案所示的那样针对它删除类。但是在这种特殊情况下,我更喜欢将最后状态的元素附加到
DOM
,类似这样的内容:

var行=2;
var tableClass=“”;
如果(行数>2)
tableClass=“彩色”;
var table=“第1AB列”;
$(“正文”).append(表);
。多姿多彩{
颜色:红色;
字号:x大号;
}
您的“表”仍然是一个字符串,不是DOM元素,也不是DOM树的一部分,因此使用jQuery
$(“.color”…)
选择它的尝试无法成功

例如,我将
表格
重命名为
表格字符串
,以区别于我将创建的
表格元素。
您可以使用jQuery:
var tableElement=$(tableString);

然后,如果满足条件,可以从元素中删除类(作为类,而不是字符串)

在将表附加到DOM之前,按此顺序执行此操作可以避免样式更改的短暂闪烁

var行=2;
//我们不知何故获得了一个表示表的字符串
变量表字符串=“”
+“第1栏”
+“A”
+"B";;
//jQuery可以解析该字符串并创建DOM元素
//(或在本例中为子树)从中删除
var tableElement=$(表字符串);
//现在您可以像处理选定节点一样对其进行操作,
//即使它还没有附加到页面DOM。

如果(行),我真的很感谢你提供的解释。关于“分离元素”的部分特别有用。