Javascript 在不使用jQuery的情况下切换父元素onclick的类
当子ul元素处于活动状态时,我尝试切换父li元素的类。我知道如何在jQuery中实现这一点,但是这个项目的目标是不依赖像Bootstrap或jQuery这样的库 我有一个关于CodePen的演示: 这里还有一个使用相同菜单的开发人员站点: 这是当前控制子菜单切换的JavaScript:Javascript 在不使用jQuery的情况下切换父元素onclick的类,javascript,Javascript,当子ul元素处于活动状态时,我尝试切换父li元素的类。我知道如何在jQuery中实现这一点,但是这个项目的目标是不依赖像Bootstrap或jQuery这样的库 我有一个关于CodePen的演示: 这里还有一个使用相同菜单的开发人员站点: 这是当前控制子菜单切换的JavaScript: // Add toggles to menu items that have submenus and bind to click event var subMenuItems = document.body.q
// Add toggles to menu items that have submenus and bind to click event
var subMenuItems = document.body.querySelectorAll('.page_item_has_children > a');
var index = 0;
for (index = 0; index < subMenuItems.length; index++) {
var dropdownArrow = document.createElement('span');
dropdownArrow.className = 'sub-nav-toggle';
dropdownArrow.innerHTML = 'More';
subMenuItems[index].parentNode.insertBefore(dropdownArrow, subMenuItems[index].nextSibling);
}
// Enables toggling all submenus individually
var subMenuToggle = document.querySelectorAll('.sub-nav-toggle');
for(var i in subMenuToggle) {
if(subMenuToggle.hasOwnProperty(i)) {
subMenuToggle[i].onclick = function() {
this.parentElement.querySelector('.children').classList.toggle("active");
this.parentElement.querySelector('.sub-nav-toggle').classList.toggle("active");
};
}
}
但到目前为止还没有成功。我感觉自己很接近,但错过了一些明显的东西
任何提示都将不胜感激-提前感谢 答案就在我面前 不需要使用
.querySelector('.class of parent)
,因为目标元素已经在父元素中。我添加了这个.parentElement.classList.toggle(“active”)代码>它就像一个符咒
// Enables toggling all submenus individually
var subMenuToggle = document.querySelectorAll('.sub-nav-toggle');
for(var i in subMenuToggle) {
if(subMenuToggle.hasOwnProperty(i)) {
subMenuToggle[i].onclick = function() {
this.parentElement.querySelector('.children').classList.toggle("active");
this.parentElement.querySelector('.sub-nav-toggle').classList.toggle("active");
this.parentElement.classList.toggle("active"); // facepalm of obviousness
};
}
}
不要对节点列表中的…使用。使用for(var i=0;i
,或者如果您的浏览器支持它,则使用submenutogle.forEach
我根据您的建议更新了我的CodePen演示,但它似乎没有起到作用。我可能做错了-这是更新的演示:。
// Enables toggling all submenus individually
var subMenuToggle = document.querySelectorAll('.sub-nav-toggle');
for(var i in subMenuToggle) {
if(subMenuToggle.hasOwnProperty(i)) {
subMenuToggle[i].onclick = function() {
this.parentElement.querySelector('.children').classList.toggle("active");
this.parentElement.querySelector('.sub-nav-toggle').classList.toggle("active");
this.parentElement.classList.toggle("active"); // facepalm of obviousness
};
}
}