我对jQuery有点新鲜,请原谅我的密集。我想通过Chrome的JS控制台选择特定页面上的所有<td>
元素:
$('td')
然而,当我这样做时,我得到以下输出:
<td>Apples</td>
jQuery不应该返回带有<td>
标记的元素数组吗?为什么我只看到符合此条件的第一个元素?
答案 0 :(得分:84)
如果网页上没有jQuery,当然没有其他代码可以为$
分配内容,Chrome的JS控制台会为$
指定document.querySelector()
的快捷方式。
您可以使用$$()
获得所需内容,document.querySelectorAll()
由控制台指定为jQuery
的快捷方式。
要知道页面是否包含jQuery,您可以在控制台中执行$
。要知道jQuery是否已分配给$().jquery
,您可以执行{{1}},如果是这种情况,将返回jQuery版本。
此外,还有浏览器插件可以在每个网页中注入jQuery。
答案 1 :(得分:15)
似乎没有正确包含jQuery以在目标页面上运行。我遇到了类似的问题,谷歌浏览器解决了以下问题。
在您的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)}
中键入时返回$
之类的内容。
创建书签(也称为bookmarklet)的过程是在您希望使用控制台处理的每个页面中注入jQuery的简便方法。但是,如果将代码直接复制粘贴到JS控制台中,则代码段也可以使用。
PS:片段的积分不是我的,因为我已经使用了一段时间而且不记得我从哪里得到它。
希望它有所帮助。
答案 2 :(得分:4)
如果安装了jQuery,并且$
符号是jQuery的简写,那么$('td')
将返回一个jQuery对象。但是,在您链接的w3schools页面中,我没有看到jQuery甚至存在。
如果存在jQuery且调试器未覆盖$
符号,则$('td')
将返回jQuery对象。 jQuery对象是一个类似于数组的对象(具有数组的某些属性),但它不是一个实际的数组。如果您正在查看控制台中的内容,那么您必须确保自己查看DOM元素,而不是在包含jQuery对象。
如果你想获得一个实际的DOM元素数组,你可以这样做:
$('td').get();
将返回一个DOM元素数组。
如果这不起作用,那么您应该检查拨打$('td').get()
的时间,以确保在搜索之前,您想要的所有td
项都在页面中。
答案 3 :(得分:0)
此外,如果您尝试对每个td执行某些操作,则需要使用.each()
来循环它们。例如:
$('td').each(function() {
//do something relevant here
});