javascript - 如何获取鼠标悬停元素的属性
问题描述
因此,我将事件侦听器添加到元素数组中,以便当将特定元素悬停在其上时,它将为该元素的 id 设置一个属性。但是,不是使用鼠标悬停的元素的 id,而是选择最后一个添加了事件侦听器的元素。
我想我的问题是如何获取鼠标悬停元素的 id?
另请注意,我正在使用 Vue 并且我尝试使用该@mouseover
事件,但是我猜是因为我在vue-pdf
未注册事件的包上使用它?
<pdf
v-for="i in numPages"
:key="i"
:page="i"
:src="src"
v-if="!loading"
@num-pages="pageCount = $event"
:ref="`${i}`"
:id="`${i}`"
@mouseover="setPage(i)"
/>
无论如何,一旦呈现文档,我就会调用此方法
methods:{
addListener() {
if(this.numPages > 0) {
for(var i = 0; i < this.numPages; i++) {
var span = this.$refs[i+1][0].$el
//this is the area I am having issues with
span.addEventListener('mouseover', () => {
this.currentPage = span.getAttribute('id')
})
}
} else {
console.log('didnt work')
}
},
}
mounted() {
this.addListener()
}
我还使用 构建了一个解决方法,getBoundClientRect
但我觉得弄清楚我当前正在查看的元素应该比这更容易。
解决方案
我还必须查看与您的问题相关的一件事是事件冒泡以及如何阻止它
我发现的问题是,如果有一个包含嵌套元素的容器,其中包含子事件所有三个事件都被触发 事件冒泡
除此之外,对事件使用箭头函数有时会遗漏重要的事件信息。
//----------------------------------^--
span.addEventListener('mouseover', (e) => {
// this.currentPage = span.getAttribute('id')
let myEvent = e.target || e.currentTarget ;
this.currentPage = myEvent.getAttribute('id') ;
//Check out details of the event ....
console.log(myEvent );
})
“e”是对事件的引用,因此“myEvent.getAttribute('id')”就是您要查找的内容。在冒泡 Some Times 方面,您可能会单击嵌套在元素内的子元素,事件您可以引用e.target.parent或e.target.parent.parent以遍历 DOM 以到达举行事件的元素详细信息。
如果您有嵌套元素,每个元素都有自己的事件,例如带有事件的 div ,则跨越嵌套在 div 内的单独事件。您可以使用e.stopPropagation();阻止事件冒泡并触发 div 事件;
这意味着当触发
跨度
事件父母
div
事件不会被触发
推荐阅读
- javascript - 使用选择标签更改位置
- java - 如何从本机(android 和 iOS)访问 react 本机异步存储数据?
- javascript - 如何知道用户是否来自谷歌广告并了解这是他在 JS 代码会话中的第 n 个页面?
- python - 您在 Tensorflow API(对象检测)中推荐哪些数据增强选项?
- ruby-on-rails - zsh:未找到匹配项:用户:update_ratings
- c++ - C/C++ 不能在 for 循环中运行 for 循环
- javascript - 将基于类的组件转换为功能性不起作用
- java - MockMvc 返回 404
- java - 不将数组从json解析到android java
- c# - PayPal .net 检查交易的最简单方法?