如何从一个元素的nextAll()检索列表中检索attr值

How to retrieve an attr value from an nextAll() retrieved list from one element?

本文关键字:检索 nextAll 列表 attr 一个 元素      更新时间:2023-09-26

问题是:我需要在其他HTML元素的列表中查找一个元素,查找下一个具有类'.wwanted class'的元素。我在同一类的一个元素中激发/捕获click事件。我最终得到了一个看起来像这样的解决方案:

$('#id-element-0000').nextAll('.wanted-class');

这应该返回属于这个类的所有元素的列表,这些元素位于我单击的元素之后。类似这样的东西:

<div class=​"wanted-class" id=​"id-element-1111" data-wanted=​"6127">​…​</div>
<div class=​"wanted-class" id=​"id-element-2222" data-wanted=​"6128">​…​</div>
<div class=​"wanted-class" id=​"id-element-3333" data-wanted=​"6129">​…​</div>
<div class=​"wanted-class" id=​"id-element-4444" data-wanted=​"6130">​…​</div>​

但是,我只想要第一个。我不需要其他人。所以我想出了一个简单的解决方案:

$('#id-element-0000').nextAll('.wanted-class')[0];

这显然返回了这个:

<div class=​"wanted-class" id=​"id-element-1111" data-wanted=​"6127">​…​</div>

这就解决了first element问题。但是,我无法访问元素上的data-wanted属性。类似于:

$('#id-element-0000').nextAll('.wanted-class')[0].attr('data-wanted');

$('#id-element-0000').nextAll('.wanted-class')[0].data('wanted');

根本不起作用。我似乎也无法将其放入变量中。

问题:有人知道如何从列表的第一个元素中检索data-wanted属性吗?

更新显然,更好的方法是使用nextAllnext整数,但我在同一类的元素之间有其他元素。因此,next函数不适用于这种情况。是的。。。我试过了。

$()包装它,将其转换为jQuery对象:

$($('#id-element-0000').nextAll('.wanted-class')[0]).attr('data-wanted');

或者简单地使用

$('#id-element-0000').nextAll('.wanted-class').first().attr('data-wanted');

当您对jQuery对象进行索引时,您将得到HTMLElement,它没有jQuery所具有的方法。

您正在访问jQuery包装器集中的第一个元素。您应该再次将其转换为jQuery对象,或者使用返回jQuery对象的.eq方法获得第一个项目:

$('#id-element-0000').nextAll('.wanted-class').eq(0).attr('data-wanted');

jsFiddle演示