在一个元素上调用.each

时间:2013-03-22 00:54:53

标签: javascript node.js each node.io

我正在使用node.io来抓取网站。目前我正在通过the scraping tutorial

我正在使用带有选择器的each

$('selector').each( ... , function () { ... } );

但是当选择器只选择一个元素时,我收到了这个问题:

TypeError: Object #<Object> has no method 'each'

可能是什么原因,以及如何缓解此问题

2 个答案:

答案 0 :(得分:4)

查看node.io的源代码后,默认显示它使用的是node-soupselect而不是jQuery。

尝试设置:

this.options.expand_single_selected = false;

在你的工作的运行方法中。或者,在创建作业时,将其设置为

new nodeio.Job({timeout:10,expand_single_selected:false}, methods);

这由these lines in the code,检查,它将强制执行正确的行为。

来自node.io的创作者 chriso

  

老实说,这是我的设计失败。每次我想要一个只有一个项目的集合中的单个元素时,我厌倦了先输入(),所以我添加了这个快捷方式 - 我知道它会在某个阶段回来咬我!

请参阅this project issue,了解如何将其更改为使用jQuery而不是解决您的问题,以及坚持soupselect的变通方法和好处。


根据您的链接,当您使用$时,您没有使用jQuery,而是使用node-soupselect

它没有.each方法。

改为使用

$('selector').forEach

哪个是本机JS函数

答案 1 :(得分:0)

如果你把你的单个元素放在[方括号]中,它将作为单个项目数组并摆脱这个问题