【发布时间】:2018-03-21 17:34:02
【问题描述】:
在我的 HTML 中,这个标签层次结构重复了一堆:
<figure>
<div class="proj-photo">
<img>
<div></div>
<a></a>
</div>
<figcaption></figcaption>
</figure>
当我在非触摸屏上时,我有一个悬停效果,它将 a 标签显示为启动链接的按钮。
在触摸屏上,我想在整个图形中添加一个 eventListener,当按下它时,它会启动嵌入的 a 标签的 href。
这是我写的,但它不起作用:
const isTouchScreen = window.matchMedia( "(hover: none)" )
if (isTouchScreen.matches){
console.log("Touch screen in use")
const figures = document.querySelectorAll("figure")
const projLinks = document.querySelectorAll("figure > div > a")
var i = 0
function clickHandler(i){
window.open(projLinks[i], '_blank')
}
function assignListeners(i){
figures[i].addEventListener('click', clickHandler(i))
}
for (i in figures) {
assignListeners(i)
}
}
【问题讨论】:
-
我认为您可以将您的 div 包裹在
<a>标签中,或者将div完全替换为<a>标签并将其用作 div。这将使操作更简单。 -
将
figures[i].addEventListener('click', clickHandler(i))替换为figures[i].addEventListener('click', clickHandler)。clickHandler(i)是undefined。
标签: javascript responsive-design addeventlistener dom-events