【发布时间】:2017-11-10 07:29:23
【问题描述】:
我正在学习 Vue.js,作为练习我正在开发一个 SPA。我通过组件递归地添加一些图标作为 imgs。 (为了解决问题,省略了很多代码)
Vue.js
Vue.component('icon', {
template:
'<img id="logo-icon" v-on:mouseover="animation"
class="platform_button" width="50" height="50"
src="../assets/img/logos/Android_icon.png" alt="img" />',
methods: {
animation: function(){
animate("#logo-icon","animated bounce")
}
}
})
new Vue({
el: '#apps'
})
...
.html
<div id="apps">
...
<div v-for="(el, in) in x" style="width:50%">
<icon></icon>
</div>
...
</div>
所有图像都正确显示。我想在鼠标悬停图像时开始动画。动画功能工作正常,问题是无论我用鼠标悬停哪个图像,只有第一个会反弹。例如。如果我用鼠标在 img1 上,img1 会弹跳。如果我用鼠标在 img5 上,img1 会弹跳而不是 img5。 怎样才能只让鼠标覆盖的图片动起来?
【问题讨论】:
-
原因是
id对于每个元素应该是唯一的;尝试使用类而不是id。 -
哪个id?应用程序或徽标图标?
-
您的图标组件有一个
id="logo-icon",它将为每个呈现的图标组件重复。但是ids 应该是唯一的,这就是为什么你的animate函数在#logo-icon上调用它时只影响一个元素。 -
现在所有图像在鼠标移到其中一张时都会弹跳
-
由于它们是递归添加的,它们都具有相同的类属性。我怎样才能只反弹选定的一个?
标签: javascript html vue.js vue-component v-for