頁面內(nèi)搜索是指用戶在當(dāng)前頁面中通過輸入關(guān)鍵詞來快速檢索所需內(nèi)容的功能。在Vue框架中實(shí)現(xiàn)頁面內(nèi)搜索十分便捷,可以通過Vue組件結(jié)合相關(guān)API快速達(dá)成目標(biāo)。
首先,在頁面模板中添加一個搜索框,我們可以通過HTML的form元素實(shí)現(xiàn):
<form> <input type="text" v-model="searchKeyword"> <button @click.prevent="search">Search</button> </form>
這里使用了Vue的v-model指令,將表單輸入的值與Vue實(shí)例中的searchKeyword變量綁定起來。同時,用@click.prevent綁定一個點(diǎn)擊事件,當(dāng)用戶點(diǎn)擊搜索按鈕時觸發(fā)search函數(shù)。
接下來,我們需要獲得需要搜索的目標(biāo)元素內(nèi)容,并給出搜索結(jié)果。可以使用jQuery庫來獲取DOM節(jié)點(diǎn)值,并根據(jù)搜索關(guān)鍵詞篩選出結(jié)果:
search() { let targetElements = $("p"); targetElements.removeClass("highlight"); targetElements.filter(function() { return $(this).text().toLowerCase().indexOf(this.searchKeyword.toLowerCase()) >-1; }).addClass("highlight"); }
這段JavaScript代碼使用了jQuery語法,首先獲取所有的p標(biāo)簽元素,然后將它們清除高亮樣式。filter函數(shù)對獲取到的p標(biāo)簽元素進(jìn)行過濾, 根據(jù)輸入框中的關(guān)鍵詞以及DOM節(jié)點(diǎn)的文本內(nèi)容獲得需要高亮的p元素,并為匹配到的p元素添加highlight樣式。
為了高亮顯示目標(biāo)元素,我們還需要在CSS文件中加入highlight樣式:
.highlight { background-color: yellow; }
現(xiàn)在,頁面內(nèi)的搜索功能已經(jīng)可以正常顯示搜索結(jié)果高亮顯示。但在實(shí)際項(xiàng)目中,我們需要實(shí)時更新搜索結(jié)果。可以使用Vue的watcher特性來實(shí)現(xiàn):
watch: { searchKeyword: function(newVal, oldVal) { this.search(); } }
這段代碼使用Vue的watch特性,當(dāng)searchKeyword變量的值改變時,調(diào)用search函數(shù)重新渲染DOM節(jié)點(diǎn)高亮顯示效果。
值得注意的是,在實(shí)際項(xiàng)目中,搜索結(jié)果可能會很多,當(dāng)用戶不斷輸入關(guān)鍵詞時,會頻繁地執(zhí)行渲染DOM操作,會影響性能。因此,我們需要添加一個搜索延時,讓用戶停止輸入后再進(jìn)行搜索:
watch: { searchKeyword: function(newVal, oldVal) { clearTimeout(this.timer); this.timer = setTimeout(() =>{ this.search(); }, 500); } }
在Vue實(shí)例中添加一個timer變量,當(dāng)searchKeyword變量值改變時,清空之前設(shè)置延時的操作,并設(shè)置一個新的延時器,延時時間為500ms,500ms內(nèi)若用戶再次輸入,則重新計算,直到500ms內(nèi)沒有輸入再觸發(fā)search操作。
以上就是關(guān)于Vue頁面內(nèi)搜索的實(shí)現(xiàn)方法。頁面內(nèi)搜索功能不僅可以幫助用戶快速定位頁面內(nèi)容,同時也提高了用戶體驗(yàn),讓用戶體驗(yàn)更加智能化舒適。