64

我对 jQuery 有点陌生,所以请原谅我太密集了。我想<td>通过 Chrome 的 JS 控制台选择特定页面上的所有元素:

$('td')

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

<td>Apples</td>

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

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

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

4

4 回答 4

133

如果网页上没有 jQuery,当然也没有其他$代码$document.querySelector().

$$()您可以使用控制台分配的快捷方式来实现您想要的document.querySelectorAll()

要知道页面是否包含 jQuery,可以jQuery在控制台中执行。要知道 jQuery 是否已分配给$,您可以执行$().jquerywhich 将返回 jQuery 版本,如果是这样的话。

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

于 2013-01-13T22:40:44.097 回答
17

似乎 jQuery 没有正确包含在您的目标页面上运行。我遇到了类似的问题,并为 Google 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", "");
})();

然后只需单击该书签即可运行它。预计它会正常包含 jQuery,并使控制台在function (e,t){return new b.fn.init(e,t,r)}您输入时返回类似$.

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

PS:片段的学分不是我的,因为我使用了一段时间,不记得我从哪里得到的。

希望能帮助到你。

于 2013-02-20T16:02:54.657 回答
4

如果安装了 jQuery 并且$符号是 jQuery 的简写,则$('td')返回一个 jQuery 对象。但是,在您链接的 w3schools 页面中,我看不到 jQuery 甚至存在。

如果 jQuery 存在并且调试器没有覆盖$符号,那么$('td')将返回一个 jQuery 对象。jQuery 对象是一个类似数组的对象(具有数组的一些属性),但它不是一个实际的数组。如果您在控制台中查看内容,则必须确保查看的是 DOM 元素本身,而不是包含的 jQuery 对象。

如果你想得到一个实际的 DOM 元素数组,你可以这样做:

$('td').get();

这将返回一个 DOM 元素数组。

如果这不起作用,那么您应该检查调用的时间,$('td').get()以确保td您想要的所有项目都在页面中,然后再搜索它们。

于 2013-01-13T21:52:06.717 回答
0

此外,如果您尝试对每个 td 执行某些操作,则需要使用 a.each()来遍历它们。例如:

$('td').each(function() {
   //do something relevant here
});
于 2013-01-13T21:56:40.013 回答