如何检查元素是否已被点击javascript
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查元素是否已被点击javascript相关的知识,希望对你有一定的参考价值。
我正在尝试在javascript中添加多个事件监听器UL
。
如果我的一个.preventDefault()
元素已被点击,我如何为.card
创建一个条件?
const cd = document.getElementById('listDeck')
cd.addEventListener('click', flipFirst, false)
function flipFirst(e) {
if (e.target && e.target.nodeName == "LI") {
var firstMove = document.getElementById(e.target.id)
firstMove.classList.add('open', 'show')
console.log('first card was clicked')
e.currentTarget.removeEventListener('click', flipFirst);
}
}
cd.addEventListener('click', function(evt) {
if () {
//condition is true
//then prevent default
}
var secondMove = document.getElementById(evt.target.id)
secondMove.classList.add('open', 'show')
console.log('second card was clicked')
})
答案
快速解决方案是在evt.currentTarget上设置一个属性,该属性引用处理程序所在的dom节点。
https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget
另一答案
一个简单的方法是将类设置为单击的li。
function flipFirst(e) {
if (e.target && e.target.nodeName == "LI") {
var firstMove = document.getElementById(e.target.id)
firstMove.classList.add('open', 'show', 'wasClicked') // Add class if clicked
console.log('first card was clicked')
e.currentTarget.removeEventListener('click', flipFirst);
}
}
cd.addEventListener('click', function(evt) {
if (evt.srcElement.classList.contains('wasClicked') == true) { // check if it has the class
//then prevent default
}
var secondMove = document.getElementById(evt.target.id)
secondMove.classList.add('open', 'show')
console.log('second card was clicked')
})
另一答案
或者在javascript中设置一个布尔变量
const cd = document.getElementById('listDeck')
cd.addEventListener('click', flipFirst, false)
var isBtnClicked = false; // <-- Here is variable declared.
function flipFirst(e) {
if (e.target && e.target.nodeName == "LI") {
var firstMove = document.getElementById(e.target.id)
firstMove.classList.add('open', 'show')
console.log('first card was clicked')
e.currentTarget.removeEventListener('click', flipFirst);
}
}
cd.addEventListener('click', function(evt) {
if () {
//condition is true
//then prevent default
}
var secondMove = document.getElementById(evt.target.id)
secondMove.classList.add('open', 'show')
console.log('second card was clicked')
isBtnClicked = true; // <--- Here is the variable
})
以上是关于如何检查元素是否已被点击javascript的主要内容,如果未能解决你的问题,请参考以下文章
在 JavaScript 中如何检查 html 元素是不是存在?
javascript 如何检查两个数组是否在JavaScript中包含相同的元素?
javascript 如何检查两个数组是否在JavaScript中包含相同的元素?