jQuery如何仅替换td内指定文本 而不删除其中的input元素
问题原因
你原来的写法调用了jQuery的text()方法对td元素内容赋值,该方法会直接清空元素内所有已有的HTML节点(包括你要保留的input复选框),仅用你返回的纯文本内容填充,所以会导致input元素丢失。
解决方案
方案1:仅处理文本节点(推荐,不会影响其他元素结构)
直接遍历td的子节点,只针对文本内容做替换,完全不会改动已有的元素节点:
$("#ordersearch-page #content table tr td").contents().each(function() { // 仅匹配文本节点做替换 if (this.nodeType === 3) { this.nodeValue = this.nodeValue.replace("Product Number/Description", "Product Number"); } });
方案2:使用html()方法替换(适合td结构固定的场景)
如果td内结构固定不会有其他同名内容,可以直接对HTML内容做字符串替换:
$("#ordersearch-page #content table tr td").html(function(_, oldHtml) { return oldHtml.replace("Product Number/Description", "Product Number"); });
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

