【发布时间】:2018-02-14 18:46:47
【问题描述】:
所以我在 Jquery 中做了这个: Game Gallery
但是我需要在 Vanilla/ES6 中对其进行更改,并且我对如何在点击时定位父母的孩子以及如何找到其他部分的索引 (.eq($(this).parent().index()) 感到困惑(在我的情况下是复制和图像部分) :
我的试验是在做一个 for 循环,例如:
const mode = document.querySelectorAll('.gamegallery span');
for (let i = 0; i < mode.length; i++) {
mode[i].onclick = function() {
this.parentNode.classList.toggle('active');
};
}
但似乎我缺少让父级与图标保持同步的东西,因为它设置了.active,但在所有图标上保持.active。我试过了:
if {
this.parentNode.classList.add('active');
}
else {
this.parentNode.classList.remove('active');
}
什么什么都不做……我还缺少什么?
最后还要更改不同的部分,例如我使用的内容/图像:
$('.gamegallery .game-images img').eq($(this).parent().index()).addClass('active');
});
我基本上需要同时执行相同的功能。将 active 移除到图标 - content-images 父级。找到第一个对象,然后转到父级并转到每个索引(默认为第一个)。 node.parentNode.childNodes; 是我发现的一件事……我会继续更新。不是要求这样做,而是我添加的代码中缺少的更多内容。特别是第一部分。来自 EcsMaScript/Modern Vanilla 的菜鸟。
【问题讨论】:
-
与其过度复杂地尝试遍历父母和孩子,不如将要切换的目标添加为
data-属性。单击span时,从所有匹配的 span 中删除活动类,将其添加到目标,并对文本包装器和图像包装器执行相同操作。 -
属性!好让我试试看!
标签: javascript jquery ecmascript-6