jquery - 我怎样才能每次循环nextUntil

标签 jquery arrays nextuntil

我需要创建一个数组的数组。我有一个相当广泛的 if/else 循环工作,但我想我可以使用 jQueries nextUntil 函数重构它。根据我所看到的,我走在正确的轨道上,但我的结果在两个方向上都达不到我所需要的。

这是 HTML

var array = [[]];

<ul id="list">
    <li class="get-it">1</li>
    <li class="get-it">2</li>
    <li class="ignore-it">3</li>
    <li class="get-it">4</li>
    <li class="get-it">5</li>
    <li class="ignore-it">6</li>
    <li class="get-it">7</li>
    <li class="get-it">8</li>
    <li class="ignore-it">9</li>
    <li class="get-it">10</li>
    <li class="get-it">11</li>
</ul>

这是我尝试抓取 .get-it 列表项的几种方法

// returns single-item array of all .get-it items
array.push( $( '#list' ).children().nextUntil( '.ignore-it' );

// returns 8 single-item array of .get-it items
$row.children().nextUntil( '.ignore-it' ).each(function(){
    array.push( $(this) );
});

这是我实际需要返回的内容

// what I need returned
array = [
    [ li[0], li[1] ],
    [ li[3], li[4] ],
    [ li[6], li[7] ],
    [ li[9], li[10] ]
]

最佳答案

这会起作用:

var array = $('.get-it:first, .ignore-it + .get-it').map(function() {
    return $(this).add($(this).nextUntil('.ignore-it'));
}).get();

<强> JSFiddle

基本上它的工作原理是这样的:

// grab the first .get-it, as well as all .get-it
// elements that follow an .ignore-it element
$('.get-it:first, .ignore-it + .get-it')

// map each of those items into an array that contains
// itself, plus all .get-it elements up until the next
// .ignore-it element
.map(function() {
    return $(this).add($(this).nextUntil('.ignore-it'));
})

// convert our jQuery collection into a regular array
.get();

关于jquery - 我怎样才能每次循环nextUntil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26385111/

相关文章:

jQuery 重置对话框取消并在表单发布之前关闭

c++ - 将 csv 读入数组

javascript - JS 中的递归挑战将所有可能的数组键组合为 true |错误版本,我附上输入和输出

javascript - 使用 json_encode 进行 Google 图表显示

jquery - 将 div 组包裹起来直到下节课

javascript - jQuery nextUntil 属性小于或等于值

PHP/JS 文本差异

javascript - 使用 jQuery 动态调整 div 的大小

javascript - Jquery检测 Bootstrap 多选项下拉列表被取消选择