我有一个要循环使用每个元素的集合,但是我在一个外部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; } }); }
这应该大大提高性能.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。