【问题标题】:JQuery selector in table表中的 JQuery 选择器
【发布时间】:2020-06-25 09:33:17
【问题描述】:

我有一个循环遍历表中的所有行。一旦我在表内,我想获得嵌套值。例如,胜负。那将具有[data-stat=wins] 的html 属性。 这是我的代码,

const result = await request.get("https://www.basketball-reference.com/boxscores/");
const $ = cheerio.load(result);

var teams = [];
var wins = [];
var losses = [];

$('#confs_standings_E > tbody > tr').each((index, element) => {
    var wins = $(element > $('[data-stat=wins]'));
    console.log(wins)
    console.log($(element).text())

})

Console.log(wins) 返回一个空字符串。但它后面的行返回所有行。这似乎很简单,我以前从未使用过 JQuery,所以不知道该怎么做。

【问题讨论】:

  • 你想要var wins = $(element).find('[data-stat=wins]').text();吗?
  • 你能 console.log(element) 看看里面有什么吗?

标签: javascript jquery node.js cheerio


【解决方案1】:

您需要使用push() 在您的wins 空数组中添加数据,如下所示。

您还需要检查element-console.log(element) 中的内容,看看是否返回了数据data-stat=wins

一旦它返回一些东西。然后你下面的代码将数据推送到你的wins = []数组中

const result = await request.get("https://www.basketball-reference.com/boxscores/");
const $ = cheerio.load(result);

var teams = [];
var wins = [];
var losses = [];

$('#confs_standings_E > tbody > tr').each((index, element) => {
    var wins.push($(element > $('[data-stat=wins]')))
    console.log($(element).text())
    console.log(wins)
})

【讨论】:

    【解决方案2】:

    我猜你想要这个,如果它只是直接的孩子,你包含 > 暗示。

    $(element).children('[data-stat=wins]'));
    

    或者对所有后代使用.find()

    您基本上所做的是将> 大于运算符应用于一个元素,比较它是否大于$('[data-stat=wins]') 返回的jQuery 对象。有效但没用。

    然后您将该结果传递给 jQuery 函数。这些都不会产生任何理想的结果。

    您的外部wins 数组是不必要的,除非您希望维护一个外部值列表。更有可能您只想使用在处理程序中找到的值。

    【讨论】:

    • 这不是问题。
    • @AlwaysHelping:专注于你的答案。它的语法无效,jQuery 选择不会产生任何有用的东西。这就是 OP 所描述的。
    • 考虑到他已经有来自element 的东西,因此为什么问题是wins 是空的,因为这不是如何将= 一个项目添加到一个空数组并期望控制台中的值我的答案所指的日志。无论如何谢谢:)
    • @AlwaysHelping:他正在用一个新变量跟踪wins。当人们不习惯动态类型并且不知道 jQuery 对象返回什么时,通常会进行这种不必要的初始化。
    • ...但您仍应专注于您的答案。它的语法无效,jQuery 根本不起作用。
    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    相关资源
    最近更新 更多