Javascript 为什么.attr()在$(this)上工作,而不是在each()的参数上工作?
我正在node.js上使用ChereIO(即jQuery服务器端)解析网页。 尝试获取元素的Javascript 为什么.attr()在$(this)上工作,而不是在each()的参数上工作?,javascript,jquery,cheerio,Javascript,Jquery,Cheerio,我正在node.js上使用ChereIO(即jQuery服务器端)解析网页。 尝试获取元素的href属性时,我遇到以下错误: TypeError:对象#没有方法“attr” 我的代码是: $('#commandes_pagination li a').each(function(index, element) { console.log(element.attr('href')); }); HTML如下所示: <ul class="liste04" id="commandes_p
href
属性时,我遇到以下错误:
TypeError:对象#没有方法“attr”
我的代码是:
$('#commandes_pagination li a').each(function(index, element) {
console.log(element.attr('href'));
});
HTML如下所示:
<ul class="liste04" id="commandes_pagination">
<li>
<a shape="rect" title="" href="/refonte/account/ajax/orderlist/1" class="page_num page_active" id="commandes_page-1">1</a>
</li>
<li>
<a shape="rect" title="" href="/refonte/account/ajax/orderlist/2" class="page_num" id="commandes_page-2">2</a>
</li>
</ul>
-
-
我可以使用
$(this.attr(“href”)
而不是element.attr(“href”)
来让它工作,但我不知道为什么。非常感谢您的解释 传递给each()
处理程序的元素
变量是一个本机JSDOM元素,它没有attr()
方法。您需要将其转换为jQuery对象,以便对其使用attr()
:
$('#commandes_pagination li a').each(function(index, element) {
console.log($(element).attr('href'));
});
或者,您可以使用
console.log(element.href)代码>如果您想保留本机对象。好吧,我的第一个猜测是元素不是jquery对象。我继续使用以下工具进行检查:
$('#commandes_pagination li a').each(function(index, element) {
console.log(element instanceof jQuery);
});
我发现我的猜测是对的。
如果您特别希望使用元素,则可以使用:
$('#commandes_pagination li a').each(function(index, element) {
console.log($(element).attr("href"));
});
你会看到它的工作。您可以通过记录元素变量来获得相同的结果。您可能会看到它不是jquery对象。+1,但应该说是thanelement。href
返回绝对路径(如果有关系的话)