开发者

javascript - replace text but not alter image within p tag

I have the following HTML.

<p><img src="myimage.jpg" />This is my text</p>

And the following javascript to replace the spaces开发者_开发技巧 with Non-breaking spaces. This works fine except for the fact that it removes the image.

$("div.myDiv p").each( function() {
    $(this).text( $(this).text().replace(/ /g, '\xA0'));
});

Any ideas how I can replace the spaces in the text and not alter the image.?


You need to check for the nodeType and replace only this value:

$(function() {
   $("p").contents().each(function(i, e) {
       if( e.nodeType === 3 ) {
           e.nodeValue = e.nodeValue.replace(/ /g, '\xA0')
       }
   });
});

Example: http://www.jsfiddle.net/4yUqL/42/


No JavaScript needed for this.

<p><img src="myimage.jpg" />This is my text</p>

and in CSS

div.myDiv p {
  white-space: nowrap;
}

Depending on your document structure, it might be useful to add an extra imgAndCaption CSS class to your paragraphs where needed, and do:

p.imgAndCaption {
  white-space: nowrap;
}


Why not put the text in a div and modify the text in the div ie:

<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'));
});


The image tag gets destroyed, because the img-tag is not included using text() so i suggest you save the image first and prepend it after your replace

$("div.myDiv p").each( function() {
    var $img = $(this).find('img:first');
    $(this).text( $(this).text().replace(/ /g, '\xA0'));
    $(this).prepend($img) ;
});
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜