首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从一堆具有相同属性的元素中获取一个``aria idden`为真的元素?

如何从一堆具有相同属性的元素中获取一个``aria idden`为真的元素?
EN

Stack Overflow用户
提问于 2018-06-11 04:50:51
回答 1查看 2.8K关注 0票数 0

我试图循环遍历所有aria-hidden都设置为false或true的元素列表,在我的示例中,只有一个元素的值设置为true,所以我需要知道哪个元素当前可见。

标记:

代码语言:javascript
复制
<div id="screen-1" class="setup-step-screen" aria-hidden="false"></div>
<div id="screen-2" class="setup-step-screen" aria-hidden="true"></div>
<div id="screen-3" class="setup-step-screen" aria-hidden="true"></div>

因此,我想检索screen-1的id:

代码语言:javascript
复制
var current_step = $('.setup-step-screen').each( function(i, obj) {
    if( $(obj).attr('aria-hidden') === 'false') {
        return $(obj).attr('id');
    }
});
console.log( current_step);

问题是,这会返回:

代码语言:javascript
复制
a.fn.init(2) [div#screen-1.setup-step-screen, div#screen-2.setup-step-screen, selector: ".setup-step-screen", prevObject: n.fn.init(1), context: document]

这是因为它不知道什么时候停止each,我相信,因此,这段代码可以工作:

代码语言:javascript
复制
var current_step;
$('.setup-step-screen').each( function(i, obj) {
    if( $(obj).attr('aria-hidden') === 'false') {
        current_step = $(obj).attr('id');
    }
});

console.log(current_step);

但我想在each中进行赋值。

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2018-06-11 04:53:22

您可以使用简单的querySelectorquerySelectorAll来实现这一点,不需要任何库或任何循环:

代码语言:javascript
复制
console.log(
  document.querySelector('[aria-hidden="false"]').id
);
console.log(
  Array.from(
    document.querySelectorAll('[aria-hidden="true"]'),
    ({ id }) => id
  )
);
代码语言:javascript
复制
<div id="screen-1" class="setup-step-screen" aria-hidden="false"></div>
<div id="screen-2" class="setup-step-screen" aria-hidden="true"></div>
<div id="screen-3" class="setup-step-screen" aria-hidden="true"></div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50787934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档