2013-01-13 87 views
30

我对jQuery有点新,所以原谅我的密度。我要选择通过Chrome浏览器的JS控制台为特定页面上的所有<td>元素:简单的jQuery选择器只选择Chrome中的第一个元素..?

$('td') 

然而,当我这样做,我得到下面的输出:

<td>Apples</td> 

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

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

编辑:我想补充一点,当我输入一个jQuery功能到浏览器的控制台,我没有得到一个jQuery对象回来。我得到一个普通的HTML元素。 Chrome设置/配置的方式肯定有问题。

+0

它确实会选择每个元素。 [元素选择器](http://api.jquery.com/element-selector/) – Fallup

回答

49

如果jQuery是不存在的网页,当然没有其他的代码将东西$,Chrome的JS控制台分配$一个快捷方式到document.querySelector()

你可以用$$()来达到你想要的效果,这是由控制台分配的一个快捷方式document.querySelectorAll()

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

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

+1

小修改:'$'不是'document.getElementById'的别名 - 它是'document.querySelector'的别名。 https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#queryselector – fbonetti

+1

这个修正肯定不是很小:-)其实,这个行为已经改变了。随着一点谷歌搜索,我发现[WebKit门票92648](https://bugs.webkit.org/show_bug.cgi?id=92648)。感谢您指出这一改变。 –

4

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

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

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

$('td').get(); 

将返回DOM元素的数组。

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

+0

也许问题出在我的Chrome配置上?当我输入'$('td')'我没有得到一个jQuery对象...我只是得到一个普通的HTML元素。同样当我输入$('td')。get()'我得到错误消息'TypeError:Object#没有方法'get'' – fbonetti

+0

@effbott - 可能是Chrome调试器已经覆盖' $'作为调试快捷方式。尝试使用'jQuery('td')'。 – jfriend00

+0

jfriend00,这听起来是正确的。当我输入'jQuery('td')'到控制台时,我收到错误消息'ReferenceError:jQuery没有定义'。也许我应该重新安装Chrome?我并不总是有这个问题。 – fbonetti

0

此外,如果您试图对每个td做些什么,您需要使用.each()来遍历它们。例如:

$('td').each(function() { 
    //do something relevant here 
}); 
14

看来jQuery没有被正确包含在目标页面上运行。我遇到了类似的问题,并针对Google Chrome解决了以下问题。

添加书签到包含以下的一行代码URL字段(它美化了可读性)Chrome浏览器:

javascript: (function() { 
    var s = document.createElement('script'); 
    s.setAttribute('src', 'http://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:代码片段不是我的,因为我使用它一段时间,不记得我从哪里得到。

希望它有帮助。

+0

如何将代码保存为网址?当我按下输入它是谷歌搜索(我有全向酒吧设置为谷歌搜索)。 – akki

+0

使用Chrome浏览器,当代码段被输入到地址栏时,字符串开头的“javascript:”部分被奇怪地省略,并且该命令被解释为搜索项。我已经用Firefox进行测试,但这并不会发生。确保在将代码片段直接用于地址栏时,在函数声明前输入“javascript:”。 – rdonatoiop

+0

是的,这也发生在我身上......我手动添加了'javascript:',但仍然按下输入什么都没有发生,页面重新加载或什么...没有我可以书签 – akki