在触发元素旁边切换可见 Class 到 Div(纯 JS)
Toggle is-visible Class to Div Next to Trigger Element (Plain JS)
这应该是一个非常简单的下拉常见问题解答系统,我在 jQuery 知道如何做到这一点,但我想学习纯 JS。
我只希望单个单击的触发器将可见 class 切换到内容 div next 到单击的触发器。就像 $(this).next addClass — 就在 JS 中。
我真的试图搜索这个问题,但 90% 的结果是 jQuery 中的解决方法 :-p
https://jsfiddle.net/48ea3ruz/
var allTriggers = document.querySelectorAll('.faq-trigger');
for (var i = 0; i < allTriggers.length; i++) {
// access to individual triggers:
var trigger = allTriggers[i];
}
var allContent = document.querySelectorAll('.faq-content');
for (var i = 0; i < allContent.length; i++) {
// access to individual content divs:
var content = allContent[i];
}
// I don't know how to target the faq-content div next to the clicked faq-trigger
this.addEventListener('click', function() {
content.classList.toggle('is-visible');
});
非常感谢您的建议! :-)
在迭代时使用nextSibling.faq-trigger
var allTriggers = document.querySelectorAll('.faq-trigger');
for (var i = 0; i < allTriggers.length; i++) {
allTriggers[i].addEventListener('click', function() {
this.nextSibling.classList.toggle('is-visible');
});
}
nextSibling 也会考虑文本节点,尝试 nextElementSibling 也
var allTriggers = document.querySelectorAll('.faq-trigger');
for (var i = 0; i < allTriggers.length; i++) {
allTriggers[i].addEventListener('click', function() {
this.nextElementSibling.classList.toggle('is-visible');
});
}
这应该是一个非常简单的下拉常见问题解答系统,我在 jQuery 知道如何做到这一点,但我想学习纯 JS。
我只希望单个单击的触发器将可见 class 切换到内容 div next 到单击的触发器。就像 $(this).next addClass — 就在 JS 中。
我真的试图搜索这个问题,但 90% 的结果是 jQuery 中的解决方法 :-p
https://jsfiddle.net/48ea3ruz/
var allTriggers = document.querySelectorAll('.faq-trigger');
for (var i = 0; i < allTriggers.length; i++) {
// access to individual triggers:
var trigger = allTriggers[i];
}
var allContent = document.querySelectorAll('.faq-content');
for (var i = 0; i < allContent.length; i++) {
// access to individual content divs:
var content = allContent[i];
}
// I don't know how to target the faq-content div next to the clicked faq-trigger
this.addEventListener('click', function() {
content.classList.toggle('is-visible');
});
非常感谢您的建议! :-)
在迭代时使用nextSibling.faq-trigger
var allTriggers = document.querySelectorAll('.faq-trigger');
for (var i = 0; i < allTriggers.length; i++) {
allTriggers[i].addEventListener('click', function() {
this.nextSibling.classList.toggle('is-visible');
});
}
nextSibling 也会考虑文本节点,尝试 nextElementSibling 也
var allTriggers = document.querySelectorAll('.faq-trigger');
for (var i = 0; i < allTriggers.length; i++) {
allTriggers[i].addEventListener('click', function() {
this.nextElementSibling.classList.toggle('is-visible');
});
}