如何为父元素添加class?.arrows关联父元素的类与属性设置问题
问题修正方案
你的代码存在两个关键问题,以下是修正后的实现:
问题分析
- jQuery对象误用原生方法:
setAttribute是原生DOM元素的方法,不能直接调用jQuery对象的这个方法,需改用jQuery的attr()方法。 - 元素选择逻辑错误:
.arrows的祖先里没有.navbar-toggler,两者是同级兄弟结构(.navbar-toggler和.collapse为同级),需要通过.arrows关联的data-target找到对应的.collapse,再通过该.collapse的id匹配.navbar-toggler的data-target来定位目标元素。
修正后的代码
$(function() { // 遍历所有符合条件的.arrows元素 $('.arrows[aria-expanded="true"]').each(function() { // 获取当前arrows关联的collapse容器 const targetCollapse = $($(this).data('target')); // 为collapse容器添加'in'类 targetCollapse.addClass('in'); // 找到对应collapse的navbar-toggler元素 const navbarToggler = $('.navbar-toggler[data-target="#' + targetCollapse.attr('id') + '"]'); // 设置navbar-toggler的aria-expanded属性 navbarToggler.attr('aria-expanded', 'true'); }); });
代码说明
- 用
each()遍历所有符合条件的.arrows,确保每个元素都能被正确处理。 - 通过
data('target')获取.arrows绑定的折叠容器,为其添加in类。 - 借助折叠容器的id,匹配对应
data-target的.navbar-toggler,设置其aria-expanded属性为字符串类型的"true"(符合ARIA属性规范)。
内容的提问来源于stack exchange,提问作者Stefana
相关产品推荐
相关产品推荐

