0

假设我有以下 HTML:

<span>
    <span id="x1" class="x">X1</span>
</span>
<span>
    <span>
        <span id="x2" class="x">X2</span>
    </span>
</span>

并且$(this)<span id="x1" ...>.

.x查找与 jQuery匹配的下一个元素的最佳方法是什么?实际文档的结构是不可预测的,因此提供的 HTML 只是一个示例。

我不能使用nextAll,因为它只能找到兄弟姐妹。如果我这样做$('.x'),它会找到所有,但我将不得不迭代/比较。有更好的解决方案吗?

另见:http: //jsfiddle.net/JZ9VW/1/

4

2 回答 2

6

鉴于您似乎不愿意对标记的结构做出假设,基于类的选择器是最好的。如果没有添加/删除元素,那么您可以选择它们一次并保留它们作为优化。

var exes = $('.x');
var x1 = $('#x1');
var nextEx = exes.eq(exes.index(x1) + 1);

http://jsfiddle.net/mattball/QKawu

对于一个真正不可预测的 HTML 结构,请求“下一个元素”只有在“具有指定类名的元素集合”的上下文中才有意义,这正是上面的代码所反映的。

于 2013-02-05T00:43:03.760 回答
1

找到父母,然后得到父母的下一个兄弟姐妹,然后找到班级。

.parent().next().find('.x')

于 2013-02-05T00:40:43.590 回答