基本上,并且以非常示意的方式,我需要针对具有相对于获得事件的元素的特定属性的第一个元素。
<div data-path="2" class="section">
... Nope.
</div>
<div data-path="1" class="section">
<a data-path="2" class="trigger" href="#">Foo</a>
</div>
<div data-path="1" class="section--2">
... Nope.
</div>
<div data-path="2" class="section--3">
I need to target this one, but not the sections previous to the trigger.
</div>
<div data-path="2" class="section--4">
... Nope.
</div>
我无法想象如何实现这一目标。这似乎很简单,但我只是坚持了两天。我尝试使用.next()和.nextUntil(),但它无法正常工作。
欢迎任何帮助,对不起我的英语。
编辑:要清楚,我需要的是当点击.trigger时,我需要定位具有相同数据路径属性的第一个下一部分,而不是触发前的部分。
答案 0 :(得分:1)
您可能希望使用nextAll
来获取具有相同属性值的下一个元素,然后使用第一个元素:
演示:http://jsfiddle.net/mUt9H/1/
相关代码:
$("a").on("click", function() {
var dp = $(this).data("path");
var txt = $(this).parent().nextAll("div[data-path='" + dp + "']").first().text();
alert(txt);
});
你的触发器是一个锚,所以首先你需要到达它的父div,然后遍历到下一个元素。因此,$(this).parent()...
。
修改 :(关于您的评论)
只需将.first()
链接到语句即可,您就可以了。
.nextAll("div[data-path='" + dp + "']").first()...
答案 1 :(得分:1)
尝试:
$('a.trigger').click(function () {
var target = $(this).parent().nextAll('div[data-path="'+$(this).data('path')+'"]').first();
})
<强> jsFiddle example 强>