javascript-替换p标记中的文本但不更改图像
我有下面的HTMLjavascript-替换p标记中的文本但不更改图像,javascript,jquery,replace,Javascript,Jquery,Replace,我有下面的HTML <p><img src="myimage.jpg" />This is my text</p> 你知道如何替换文本中的空格而不改变图像吗?为什么不将文本放在div中并修改div中的文本 <p><img src="myimage.jpg" /><div>This is my text</div></p> $("div.myDiv p div").each( function() {
<p><img src="myimage.jpg" />This is my text</p>
你知道如何替换文本中的空格而不改变图像吗?为什么不将文本放在div中并修改div中的文本
<p><img src="myimage.jpg" /><div>This is my text</div></p>
$("div.myDiv p div").each( function() {
$(this).text( $(this).text().replace(/ /g, '\xA0'));
});
这是我的文本
$(“div.myDiv p div”)。每个(函数(){
$(this).text($(this).text().replace(//g,'\xA0'));
});
您需要检查节点类型并仅替换此值:
$(function() {
$("p").contents().each(function(i, e) {
if( e.nodeType === 3 ) {
e.nodeValue = e.nodeValue.replace(/ /g, '\xA0')
}
});
});
示例:图像标记被销毁,因为使用
text()
时未包含img标记,因此我建议您先保存图像,并在替换后对其进行预处理
$("div.myDiv p").each( function() {
var $img = $(this).find('img:first');
$(this).text( $(this).text().replace(/ /g, '\xA0'));
$(this).prepend($img) ;
});
这不需要JavaScript
<p><img src="myimage.jpg" />This is my text</p>
根据您的文档结构,在需要的段落中添加额外的imgAndCaption
CSS类可能会很有用,并执行以下操作:
p.imgAndCaption {
white-space: nowrap;
}
将div放在p标签中肯定是不好的做法!我以前没有研究过nodeType和nodeValue,但这是有效的。谢谢你的好意。。。有时候你需要后退一步才能看到简单的答案。谢谢-我给jAndy打勾纯粹是因为他回答了我本来想做的问题,但在这种情况下,你的解决方案肯定是正确的。
div.myDiv p {
white-space: nowrap;
}
p.imgAndCaption {
white-space: nowrap;
}