这是交易:我需要在其他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
函数在这种情况下不适用。而且,是的......我已经尝试过了。
答案 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');