如何使具有 #bold 单词Jquery的特定单词加粗



嗨,有一种方法可以使特定文本加粗,例如

我有这个 #boldword,我希望 #boldword2 这两个人像这样大胆。

我有这个词,我希望word2这两个像这样大胆。

因此,正如你所看到的第二个例子,我希望前面有粗体的每个单词都变得粗体,#bold 被删除。

到目前为止我尝试了一些东西

$.fn.wrapInTag = function(opts) {
var tag = opts.tag || 'strong',
words = opts.words || [],
regex = RegExp(words.join('|'), 'gi'),
replacement = '<strong>$&</strong>';
return this.html(function() {
return $(this).text().replace(regex, replacement);
});
};
$('p').wrapInTag({
tag: 'em',
words: ['#boldworld']
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>The #boldworld is big and red.</p>

据我了解,您有一个要加粗的单词列表,其中包含前缀#bold.您想从单词中删除#bold前缀吗?

您需要做的就是在文本中添加.replace('#bold', '')

编辑

根据您的评论,您想更改正则表达式,使其匹配任何#bold开头的字符串并加粗它?

我使用的模式是(#bold([^s.]+))- 找到任何以#bold开头的单词,然后捕获所有内容,直到空格或句点([^s.]+)。整个批次在括号中的原因是为了让整个字符串被替换。我还将替换字符串从$&更改为$2.不同之处在于,$&$1相似,因为它将放置整个匹配的字符串(例如#boldworld(放入文本中;而$2将放入内部匹配的文本(即它在([^s.]+)中匹配的文本,例如world(。

为了我自己的理智,我还从内部函数中删除了jquery调用,并将其替换为vanilla javascript。

"use strict";
$.fn.wrapInTag = function() {
//this = jQuery element
return this.html(function() {
//this = dom element
return this.textContent
.replace(/(#bold([^s.]+))/gi, '<strong>$2</strong>');
});
};
$('p').wrapInTag();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>The #boldworld is big and #boldred.</p>

相关内容

  • 没有找到相关文章

最新更新