与@Sindre 相同的概念,当鼠标悬停在 < p > 上时,将文本拆分为单词,并用于渲染它们。当点击这些<span>时,高亮它们。
在我下面的 jsfiddle 中,单击一个单词,所有相同的单词都会突出显示。您可以更改与选择的设置进行比较的方式,例如。与索引而不是单词本身进行比较,以单独突出显示单个单词。
此外,我没有使用鼠标悬停,而是单击。所以你应该点击<p>来选择它(激活,使颜色为红色),然后选择一个单词。
jsfiddle在这里
// main code
<div
@click='select'
:class='cls'>
<p v-if='!split'> {{data}} </p>
<p v-else>
<span
v-for='word in spdata'
:class='chosen(word)'
@click='choose'>
{{word}}
</span>
</p>
</div>
// --------------------
methods: {
select (e) {
this.split = true
},
choose (e) {
let el = e.srcElement
this.chosenWord = el.innerText
console.log(this.chosenWord)
},
chosen (word) {
if (word.trim() === this.chosenWord.trim()) {
return ['chosen']
} else {
return []
}
}
},
computed: {
spdata () {
return this.data.split(' ')
}
}