点击dropdown-sort类div获取aria-expanded值返回undefined的问题求助
问题解决方法
你的代码返回undefined的原因是用错了属性读取方法:jQuery的data()方法专门用于读取**data-前缀的自定义属性**,而aria-expanded是标准的ARIA属性,不属于data-*系列,所以用data("aria-expanded")读不到值。
下面是几种正确的解决方式:
方式1:用jQuery的attr()方法读取属性
$('.dropdown-sort').on('click', function() { // 用attr()读取原生HTML属性 var expandable = $('.form-control').attr("aria-expanded"); alert(expandable); // 返回字符串"true" });
如果需要布尔类型的结果,可以做个类型转换:
var expandable = $('.form-control').attr("aria-expanded") === "true";
方式2:用原生JS的getAttribute()方法
$('.dropdown-sort').on('click', function() { var formControl = document.querySelector('.form-control'); var expandable = formControl.getAttribute("aria-expanded"); alert(expandable); });
优化建议:使用相对选择器
如果页面上存在多个.form-control元素,建议从点击的.dropdown-sort内部查找目标元素,避免获取到无关元素的属性:
$('.dropdown-sort').on('click', function() { // 从当前点击的容器内找.form-control,定位更准确 var expandable = $(this).find('.form-control').attr("aria-expanded"); alert(expandable); });
另外注意:你的原代码末尾缺少闭合的),补上后代码才能正常执行。
内容的提问来源于stack exchange,提问作者Jack Maessen
相关产品推荐
相关产品推荐

