在链接中获得下一个和prev div id

时间:2015-01-18 14:25:09

标签: jquery attributes each next

我有几个具有唯一类'slide_image'和唯一ID的div。 在每个div中我有2个链接,“#next”和“#prev”。 我想要做的是为每个div获取next和prev div的id,并将id ty链接归属。

例如.slide_image id = slide_3

<div id="slide_2" class="slide_image">
    1
    <a href="#slide_3" id="next"></a><a href="#slide_1" id="prev"></a>
</div>

<div id="slide_3" class="slide_image">
    1
    <a href="#slide_4" id="next"></a><a href="#slide_2" id="prev"></a>
</div>

这是我尝试过的但它不起作用,我认为我的each()函数有问题:

$('.slide_image').each(function(e){
    var next_link = $(this).next().attr('id');

$( "a#next" ).next().attr("href", next_link)
});

$('.slide_image').each(function(e){
    var prev_link = $(this).prev().attr('id');

$( "a#prev" ).prev().attr("href", prev_link)
});

这是一个包含我所有代码的Jsfiddle:http://jsfiddle.net/4yzg25o2/1/

任何人都可以帮我这个吗?

非常感谢,

1 个答案:

答案 0 :(得分:1)

我首先要做的是人们的建议。将#next#prev更改为班级.next.prev

然后循环每个.slide_image并找到它的索引(索引将是它内部的当前.slide_image元素。所以第一个.slide_image将是1 ,第二个2等)。然后从这里获取下一个和前一个索引(因此1将是-1和2)。然后我们可以使用jQuery's eq()通过它的索引查找元素。一旦我们拥有了该元素,我们就可以使用attr()来获取它的身份。

然后只需将这些ID添加到.next.prev链接。

查看http://jsfiddle.net/4yzg25o2/6/,其中有一个有效的例子。

我没有检查错误处理,但eq()会返回undefined,如果它所查找的元素不存在(例如它所在的元素&#39} ; s索引是-1)。所以你可以使用它来显示其他幻灯片。例如,如果我们在第一张幻灯片上,.prev链接到最后一张幻灯片,还是应该隐藏链接以防止他们点击回来?

我的代码中需要注意的一件事是在this中使用$(".next", this)。基本上第二个属性是上下文,看看这个SO post