使用jQuery从选择中获取下一个或上一个元素

16

如何从 jQuery 选择器中获取前一个或后一个元素?

基本上,我会有一组元素,比如所有输入框:

$('input')

当我有一个单独的输入时,我还需要获取前一个和后一个输入。 类似于:

$(this).prev('input')
$(this).next('input')

然而,这些输入元素并非兄弟节点,我不想仅仅获取紧随其后的DOM元素。我想要在jQuery选择器中获取下一个元素(在此示例中是输入元素)。


我知道可以通过以下方式迭代 jQuery 选择器:

.each(function(...

但我只需要检查前后的一个元素。

这些元素也将是动态排序的(使用jQuery UI sortables)。


那么下一个、子元素和上一个都是父元素吗? - TStamper
它们在不同的 div 容器中进行可排序。 - codegoalie
2个回答

19
你可以像这样做:
var inp = $('input');

var index = inp.index(this);
var next = inp[index+1];
var prev = inp[index-1];

注意,prevnext现在不再是jQuery对象,而是DOM对象。如果要将它们转换为jQuery对象,您需要使用$()函数进行包装。


8

jQuery已经内置了您所需的支持。

$($('input')[0]).next('input')

next

 $($('input')[0]).prev('input')

previous


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接