javascript-替换p标记中的文本但不更改图像

javascript-替换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() {

我有下面的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() {
     $(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;
}