我有一个要循环使用每个元素的集合,但是我在一个外部for循环中循环它们.当我找到我想要的每一个,我返回虚假爆发.下一次外循环运行时,我想在我返回的那个元素之后的每个元素中启动.通用代码示例:
var nextIndex = 0; for (var j=1; j <= someCount; j++) { // do outside loop stuff $('#someElemID').find('.someClass').each(function(index) { if (/*this is right one*/) { // do something // next index should get passed to each function next loop... somehow? nextIndex = index + 1; return false; } }); }
我考虑转换到for循环,但是后来我很困惑,如何访问.find(‘.someClass’)的返回.也许这是一个单独的问题本身…
这是明显的吗?
解决方法
使用slice()
http://api.jquery.com/slice/
$('#someElemID').find('.someClass').slice(nextIndex).each( ...
btw如果元素是静态的,请考虑缓存:
var $elms = $('.someClass','#someElemID'),nextIndex = 0; for (var j = 1; j <= someCount; j++) { // do outside loop stuff $elms.slice(nextIndex).each(function(index) { if (/*this is right one*/) { nextIndex = index + 1; return false; } }); }
这应该大大提高性能.