use*_*600 1 html javascript jquery dom
我有这个:
$(".forum-threadview-post-text:contains(':P')").html(":P").replaceWith("<img src='http://website.com/images/emotes/tongue.png' />");
Run Code Online (Sandbox Code Playgroud)
它应该采用“: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 )
});
Run Code Online (Sandbox Code Playgroud)
您的无法按预期工作的原因是因为您正在用图像替换匹配的元素,而不是它的具体内容。您可以使用.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' />"));
}
});
Run Code Online (Sandbox Code Playgroud)