7
我在教自己的JS,並試圖避免jQuery,直到我的JS技能更好。如何添加一個事件監聽器到div的所有子節點以及這些div的數組中?
目標:爲點擊事件添加一個eventlistener到某個類的所有div。讓該類的所有子節點都響應該事件。
我的HTML
<div class="grid-panel six columns">
<div class="grid-panel-image">
<i class="fa fa-css3"></i>
</div>
<div class="grid-panel-title">
<h4>css3</h4>
</div>
</div>
<div class="grid-panel six columns">
<div class="grid-panel-image">
<i class="fa fa-paint-brush"></i>
</div>
<div class="grid-panel-title">
<h4>tamberator</h4>
</div>
</div>
我選擇使用所有.grid-panel
的div這個JS
var gridPanels = document.querySelectorAll('.grid-panel');
然後,因爲它返回的div與類.grid-panel
我添加的事件偵聽器點擊一個數組因此
for(i=0; i<gridPanels.length; i++){
gridPanels[i].addEventListener('click', myFunction);
}
我的功能是本
myFunction(){
var e = event.target;
switch(e){
case gridPanels[0]:
modalArray[0].setAttribute("data-modal-display", "show");
break
case gridPanels[1]:
modalArray[1].setAttribute("data-modal-display", "show");
break
}
console.log(e);
}
這並不工作,如果我點擊.grid-panel
DIV的一個非常具體的部分和e
日誌特定元素。但是,單擊div的任何子項都會將e
記錄爲我單擊的元素,但eventlistener不會應用於該元素。我在這個事件代表團顯然缺少一些東西。我真的希望這個函數能夠觸發點擊的div和它的所有子節點。
哇。這非常好。感謝您糾正我使用的活動屬性。 – Tamb
@Tamb:不客氣。祝你好運! –