jQuery的next()
函数返回一个同级,因为他们出现在所有匹配元素的DOM树(而不是jQuery结果集)中。因此调用
$("#container .swaps:first")
得到第一锚,并呼吁next()
它返回undefined,因为它没有下一个兄弟。我想你可能想要实现Iterator pattern,如果你想通过调用next()
连续访问节点。
jQuery对象是一个项目数组。您可以将当前索引存储在变量中,并在获取下一个元素后将其增加。
// Naive way
var items = $("#container .swaps");
var i = 0;
items[i++] // first <a>
items[i++] // second <a>
这里有两个实现,包使用迭代器模式上述功能 - 一个可以作为一个jQuery插件,另一种是基本上独立的功能。这两种工作方式相同:
// Iterator function
function Iterator(list) {
var results = list;
var i = 0;
this.next = function() {
return results[i++];
};
return this;
}
// Usage
var iterator = Iterator($("#container .swaps"));
iterator.next() // first <a>
iterator.next() // second <a>
二是几乎相同的第一个,但使用了jQuery插件,而不是:
// jQuery plugin
$.fn.iterator = function() {
var i = 0;
this.next = function() {
return this[i++];
};
return this;
};
// Usage
var iterator = $("#container .swaps").iterator();
iterator.next() // first <a>
iterator.next() // second <a>
JavaScript 1.7中有一些很酷的功能在generators and iterators这样做只是这,但它还不是很普遍 - 只有Firefox支持它,据我所知。
当你调用'thisone.next()'时,你是否试图找到下一个' Anurag 2010-04-07 04:37:24
是。问题在于我需要获取下一个,以便我可以迭代(以便下一个成为当前的下一个,下一个成为下一个,等等......) – Rio 2010-04-07 13:53:08