3 回答

TA貢獻1824條經(jīng)驗 獲得超5個贊
我相信問題是您通過 querySelector 進行選擇不是您單擊的元素的父級。您必須選擇被單擊元素的 parentNode。
這可能會解決您的問題:
<div class="project-item-wrapper expanded">
<span class="close" onclick="closeExpandedProject(this)">X</span>
</div>
Javascript:
function closeExpandedProject(element) {
const expandedElement = element.parentNode;
expandedElement.classList.remove('expanded');
}

TA貢獻1811條經(jīng)驗 獲得超4個贊
所以是的,它有效,但問題來自不同的來源。我還有第二個正在添加此類的聽眾。所以使用后stopImmediatePropagation
一切正常。如有混淆,請見諒。

TA貢獻1860條經(jīng)驗 獲得超8個贊
使用目標選擇器將事件偵聽器添加到對象而不是編寫 onclick=foo()
您可以使用 Id 或 ClassName 來完成。
使用 ClassName,它選擇了一個對象列表,因此您必須訪問第 0 個索引
document.getElementsByClassName("close")[0].addEventListener("click", closeExpandedProject);
直接使用 Id
document.getElementById("close").addEventListener("click", closeExpandedProject);
function closeExpandedProject() {
console.log("in function")
const expandedElement = document.querySelector('.expanded');
expandedElement.classList.remove('expanded');
}
document.getElementsByClassName("close")[0].addEventListener("click", closeExpandedProject);
.expanded { border: 1px solid black; }
<div class="project-item-wrapper expanded">
Here is some text
<span class="close" id="close">X</span>
</div>
添加回答
舉報