這是一個功能需求,就是要在搜尋關鍵字的時候直接在頁面上標註(mark, highlight) 搜尋的關鍵字出來,這邊用 Vue.js 示範給大家看一下。
首先我有用到這隻 plugin:mark.js
再把他讀入後,官網上寫的 mark 的方法如下:
var context = document.querySelector(".context"); var instance = new Mark(context); instance.mark(keyword [, options]);
記得要在 css 加上樣式:
mark{ background: orange; color: black; }
我把它改成用 vue 的方法寫:
data() { return { html: '內容 ', search: '關鍵字', context: null } }, watch:{ search: function(val){ var instance = new Mark(this.context); instance.mark(val); } }, mounted(){ this.context=document.querySelector(".context"); }
因為他的 mark 不會自動取消,所以我們要加上 unmark():
instance.unmark();
完整的 code 如下:
只是這邊我沒有做初使的設定,有需要的再自己改一下吧。