jQuery:如何获取元素的特定子集?

jQuery: How do I obtain specific subsets of elements?

提问人:Cooz 提问时间:10/16/2020 最后编辑:Peter BCooz 更新时间:10/16/2020 访问量:156

问:

我必须在网页上显示一个表格,然后打印该表格。表行由以下语句检索:

var rows = $element.find(".row");

假设这导致 50 行。现在的要求是:

  • 每页打印页应有 20 行
  • 每个打印页面必须显示列标题,这些列标题位于 和rows[0]rows[1]

因此,我需要遍历集合,以便循环为我提供每页的正确子集,如下所示:rows

var printRows = rows.slice(0, 2) + rows.slice(2, 22); //values for page 1
var printRows = rows.slice(0, 2) + rows.slice(22, 42); //values for page 2
var printRows = rows.slice(0, 2) + rows.slice(42, 52); //values for page 3

我知道如何创建循环。问题是这些行不是有效的 jQuery。如何获取所需的行的子集?

谢谢!

JavaScript jQuery 切片

评论

1赞 DBS 10/16/2020
通常,您需要在将数据添加到页面之前将数据切片到页面中。但是,如果你这样做,问题是你试图将两个数组(jQuery对象)放在一起,这不会给你预期的结果。(查看连接数组的其他方法,例如 spread 语法concat+)

答:

0赞 Peter B 10/16/2020 #1

尽管 jQuery 对象并不是真正的数组,但它们可以像数组一样使用,既可以像您已经使用的那样使用,也可以使用 ...(传播)运算符。slice

下面是一个示例,用于获取所需的项目。它使用一个数组,但也可以使用包含 DOM 元素的 jQuery 对象。slice...

const pageLength = 20;
const pageCount = 5;
const rows = [];
while (rows.length < pageCount * pageLength - 10) rows.push(rows.length);

for (let page = 1; page <= pageCount; page++) {
  var result = [
    ...rows.slice(0, 2),
    ...rows.slice(2 + (page - 1) * pageLength, 2 + page * pageLength)
  ];
  console.log("Page " + page + ":", result.toString());
}

评论

0赞 Cooz 10/19/2020
是的,这将起作用。我不知道点差运算符。谢谢!