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

时间:2014-09-02 16:59:41

标签: javascript jquery html

这是交易:我需要在其他HTMLElements列表中查找一个元素,用于下一个具有类'.wanted-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>​

但是,我只想要第一个。我不需要其他人。所以我出现了(AKA:在google上找到)一个简单的解决方案:

$('#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属性?

更新 显然,更好的方法是使用next nextAll的整数,但我在同一个类的元素之间有其他元素。因此,next函数在这种情况下不适用。而且,是的......我已经尝试过了。

2 个答案:

答案 0 :(得分:1)

$()包裹它以将其转换为jQuery对象:

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

或者只是使用

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

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

答案 1 :(得分:0)

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

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

jsFiddle Demo