如何突出显示html标签内的单词而不突出显示vue中的标签

阿里塞迪吉安

我有一个带有 v-html 的标签,它呈现一个 html 文本并显示它,如下所示:

<div v-html="htmlText"></div>
我写了这段代码来突出显示文本,它适用于普通文本:

Vue.filter('highlight', function (word, query) {
  if (query !== '') {
    let check = new RegExp(query, "ig");
    return word.toString().replace(check, function (matchedText, a, b) {
      return ('<strong class="mark">' + matchedText + '</strong>');
    });
  } else {
    return word;
}
<div v-html="$options.filters.highlight(htmlText, myWord)">
</div>

我想突出显示此文本中的一个单词而不突出显示 html 标签。请帮忙。谢谢。

他们好美

如果你不反对外部依赖,你可以使用mark.js

它允许使用 RegExp 突出显示文本,并且可以跨 HTML 标签工作。这是一个如何与 Vue 一起使用的示例:

var demo = new Vue({
  el: '#demo',
  data: {
    // The html to highlight
    html: '<div>Hello <span>this </span>is <span>some </span>text</div>',
    
    // The html with highlighting
    highlightedHtml: '',
    
    // The search term to highlight
    search: 'Hello'
  },
  watch: {
    // When the search term changes: recalculate the highlighted html
    'search': {
      handler: function() {
      	// We create an element with the html to mark. Give it a unique id 
        // so it can be removed later
        let id =  'id' + (new Date()).getTime();
        $('body').append(`<div id="${id}" style="hidden">${this.html}</div>`);
        
        // Create a Mark instance on the new element
        let markInstance = new Mark('#' + id);
        
        // Mark the text with the search string. When the operation is complete,
        // update the hightlighted text and remove the temporary element
        markInstance.markRegExp(new RegExp(this.search, 'gmi'), {
          done: () => {
            this.highlightedHtml = $('#' + id)[0].innerHTML;
            $('#' + id).remove();
          },
          acrossElements: true,
        });
    	},
      immediate: true
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.2/vue.js"></script>
<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.0/mark.js"></script>

<div id="demo">
  <div>/ <input type="text" v-model="search"> /gmi</div>
  <div v-html="highlightedHtml"></div>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Emacs中突出显示不匹配的HTML标签?

来自分类Dev

忽略HTML标签以突出显示匹配的单词

来自分类Dev

如何突出显示所选标签?

来自分类Dev

在标签栏中设置自定义图标以突出显示/不突出显示

来自分类Dev

HTML悬停时突出显示标签

来自分类Dev

如何搜索和突出显示标签中不包含内容的字词?

来自分类Dev

XHTML:如何突出显示匹配标签?

来自分类Dev

如何突出显示/禁用Tabcontrol标签页

来自分类Dev

如何启用或禁用突出显示匹配标签

来自分类Dev

突出显示导航菜单中的活动标签

来自分类Dev

Android:在SpannableString中突出显示<em>标签

来自分类Dev

Highcharts 中的突出显示 x 轴标签

来自分类Dev

如何在Vim中突出显示标签和空格

来自分类Dev

VSCode:如何禁用doxygen标签在注释中突出显示?

来自分类Dev

如何使活动标签在mat-tab中突出显示?

来自分类Dev

如何突出显示标签中的空格?(仅CSS)

来自分类Dev

如何突出显示导航栏中的活动标签

来自分类Dev

突出显示当前标签页?

来自分类Dev

使用 jQuery 在 textarea 中匹配和突出显示标签/单词(更改颜色和字体粗细)

来自分类Dev

如何突出显示重复的单词?

来自分类Dev

如何删除突出显示的单词?

来自分类Dev

突出显示RichEditBox中的单词

来自分类Dev

C#标签突出显示并删除突出显示

来自分类Dev

PHP突出显示html标签whitin加载html内容

来自分类Dev

修改HTML标签的Sublime文本语法突出显示

来自分类Dev

HTML-SELECT标签的OPTION部分突出显示文本

来自分类Dev

修改HTML标签的Sublime文本语法突出显示

来自分类Dev

HTML-SELECT标签的OPTION部分突出显示文本

来自分类Dev

jQuery在标签中突出显示元素中的文本片段

Related 相关文章

热门标签

归档