javascript - 使用 Javascript/Jquery 用图像替换单词

标签 javascript jquery html dom

我有这个:

$(".forum-threadview-post-text:contains(':P')").html(":P").replaceWith("<img src='http://website.com/images/emotes/tongue.png' />");

它应该采用“:P”的任何实例并将其替换为表情符号图像。但是,它接收带有 :P 的帖子并用该图像替换整个帖子。我怎样才能只替换 :P。

最佳答案

尝试

var tImg = "<img src='http://website.com/images/emotes/tongue.png' />";
$(".forum-threadview-post-text:contains(':P')").html(function (_, html) {
     return html.replace(/:P/g , tImg )
});

Demo

您的无法按预期工作的原因是您用图像替换了匹配的元素,而不是图像的具体内容。您可以使用 .html( function(index, oldhtml) )获取每个元素的 html 并替换它。

或者:

$(".forum-threadview-post-text:contains(':P')").contents().each(function () {
    if(this.nodeType === 3 && /:P/g.test(this.nodeValue)) {
       $(this).parent().html(this.nodeValue.replace(/:P/g,"<img src='http://placehold.it/10x10' />"));
    }
});

关于javascript - 使用 Javascript/Jquery 用图像替换单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20135868/

相关文章:

javascript - Node 服务器下载图片成功但不显示

javascript - handlebars js 将 map 打印为表格

jquery - 当我将语言更改为阿拉伯语时,Highcharts 图例重叠

javascript - 在 JavaScript 中通过节点名称导航元素

javascript - 理解 Jon Resig 的偏应用实现

javascript - jQuery 添加动态表单元素

jQuery Masonry/Isotope 流体布局,具有适当的排水沟且无包装

javascript - 创建一个可重用的函数,用于使用回调进行删除/确认

html - Bootstrap 是否有一些技巧可以相互定义桌面、平板电脑和手机,而不是简单的屏幕尺寸?

javascript - 将 onload 函数的结果传递给变量