简单的jQuery选择器只选择Chrome中的第一个元素..?

fbo*_*tti 46 jquery google-chrome web-scraping

我对jQuery有点新意,请原谅我密集.我想<td>通过Chrome的JS控制台选择特定页面上的所有元素:

$('td')
Run Code Online (Sandbox Code Playgroud)

然而,当我这样做时,我得到以下输出:

<td>Apples</td>
Run Code Online (Sandbox Code Playgroud)

是不是jQuery应该返回带有<td>标记的元素数组?为什么我只看到符合此标准的第一个元素?

这是有问题的网站:http://www.w3schools.com/html/html_tables.asp

编辑:我想补充一点,当我在Chrome控制台中输入一个jQuery函数时,我没有得到一个jQuery对象.我得到一个简单的HTML元素.我的Chrome设置/配置方式肯定有问题.

Gra*_*ble 94

如果网页上没有jQuery,当然没有其他代码可以分配$,Chrome的JS控制台会分配$一个快捷方式document.querySelector().

您可以$$()通过控制台指定的快捷方式实现您想要的功能document.querySelectorAll().

要知道页面是否包含jQuery,您可以jQuery在控制台中执行.要知道是否已分配jQuery $,您可以执行$().jquery哪些将返回jQuery版本(如果是这种情况).

此外,还有浏览器插件在每个网页中注入jQuery.

  • 小更正:`$` 不是`document.getElementById` 的别名——它是`document.querySelector` 的别名。https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#queryselector (2认同)
  • 这种纠正绝对不是小问题:-)实际上,行为已更改。经过一番谷歌搜索,我发现了[WebKit票92648](https://bugs.webkit.org/show_bug.cgi?id=92648)。感谢您指出此更改。 (2认同)

rdo*_*iop 15

似乎没有正确包含jQuery以在目标页面上运行.我遇到了类似的问题,谷歌Chrome浏览器解决了以下问题.

在Chrome浏览器中添加一个书签,其中包含以下单行代码作为URL字段(为了便于阅读,它已被美化):

javascript: (function () {
    var s = document.createElement('script');
    s.setAttribute('src', 'https://code.jquery.com/jquery-latest.min.js');
    if (typeof jQuery == 'undefined') {
        document.getElementsByTagName('head')[0].appendChild(s);
    }
    jQuery("td.edit select option[value=BN]").attr("selected", "");
})();
Run Code Online (Sandbox Code Playgroud)

然后只需单击该书签即可运行它.它通常包含jQuery,并使控制台返回类似于function (e,t){return new b.fn.init(e,t,r)}你输入的内容$.

创建书签(也称为bookmarklet)的过程是在您希望使用控制台处理的每个页面中注入jQuery的简便方法.但是,如果将代码直接复制粘贴到JS控制台中,则代码段也可以使用.

PS:片段的积分不是我的,因为我已经使用它一段时间了,不记得我从哪里得到它.

希望能帮助到你.