Javascript 替换元素内的文本
我需要替换任意元素中的一部分文本。我不知道元素的任何结构,包括它可能具有的任何子元素,但我必须假设可能存在带有附加绑定的子元素。例如:Javascript 替换元素内的文本,javascript,jquery,Javascript,Jquery,我需要替换任意元素中的一部分文本。我不知道元素的任何结构,包括它可能具有的任何子元素,但我必须假设可能存在带有附加绑定的子元素。例如: <div id="checkit"> Lorem ipsum textum checkum. <input type="button" id="clickit" value="Click Me" /> </div> 益智草。 现在,如果我想用其他内容替换“ipsum”,我可以抓取#checkit with inn
<div id="checkit">
Lorem ipsum textum checkum.
<input type="button" id="clickit" value="Click Me" />
</div>
益智草。
现在,如果我想用其他内容替换“ipsum”,我可以抓取#checkit with innerHTML的内容,在其上运行replace,然后用新文本设置其innerHTML,但是如果在#clickit上设置了绑定,则在更新innerHTML时绑定将丢失
我真的不需要或者不想替换元素的整个innerHTML,但是我不知道如何替换元素中的一部分文本
所以我的问题有两个:
$('#checkit').contents().each(function(){
if(this.nodeType===3) //select only the text nodes
{
this.nodeValue = this.nodeValue.replace(/u/g,'Z'); //replace all u with z
}
});
关于如何在不丢失绑定的情况下替换innerHTML的建议(或者在内部保存绑定的方法#选中它并在替换innerHTML后重新应用它们)
如果要替换innerHTML并保持绑定完好无损,可以再次绑定事件,或者使用jquery中的.on()
使用事件委派。因此,无论是现在还是将来,该事件都会附加到DOM中与选择器匹配的元素,而无需再次绑定它们
请参见解决此问题的最佳方法是在另一个元素中添加文本,然后使用Jquery的prev()方法查找上一个元素 您可以查看以下链接: HTML代码:
<div id="checkit">
<div >Lorem ipsum textum checkum.</div>
<input type="button" id="clickit" value="Click Me" />
</div>
代码也在JSFIDLE上创建:
请检查一下…不幸的是,.on()对我来说不是那么有效;即使使用.on()设置绑定,当innerHTML更改时它仍然丢失。除此之外,我正在处理由其他人设置绑定的任意内容,因此我无法控制它们的设置方式。不过,nodeValue提示提供了我想要的内容,所以谢谢@如果你能提供一个示例,我可以看一下。这一点应该起作用。可能是您的选择器导致了问题。另一个后续问题。这个答案在我的代码中起作用——有一个问题我应该从节点类型中意识到。我正在尝试将文本包装在标记中。例如,我曾经有过lipsum,现在有了lipsum。它可以工作-但是显示为文本而不是标记。对于包装,您可以参考我的另一个答案,谢谢您的答案,但是当我尝试匹配的文本可能不是在触发器之前时,它在任意内容中实际上不起作用。
$ = jQuery.noConflict();
$("#checkit").delegate('#clickit' , 'click' , function(){
$(this).prev().html('your text here..');
});