将下一个元素定位到另一个元素

时间:2014-05-29 15:26:34

标签: javascript jquery

基本上,并且以非常示意的方式,我需要针对具有相对于获得事件的元素的特定属性的第一个元素。

<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时,我需要定位具有相同数据路径属性的第一个下一部分,而不是触发前的部分。

2 个答案:

答案 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