Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么.attr()在$(this)上工作,而不是在each()的参数上工作?_Javascript_Jquery_Cheerio - Fatal编程技术网

Javascript 为什么.attr()在$(this)上工作,而不是在each()的参数上工作?

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

我正在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_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,但应该说是than
element。href
返回绝对路径(如果有关系的话)