我有两个jQuery select表达式:
(1) $('html body table tbody tr td:nth-child(2) table tbody tr td table:nth-child(1) tbody tr:nth-child(2) td table tbody tr td:nth-child(2)')vs
(2) $('html body table tbody tr td table tbody tr td table tbody tr td table tbody tr td')据我所知,第一个函数比第二个函数更具体,所以如果(1)返回一个元素,那么它也必须包含在(2)返回中。可能(2)可以有多个元素(就像我的例子一样),所以它应该返回一个匹配元素的数组,不是吗?相反,它返回一些完全不同的元素,并且只返回一个(实际上它只返回第一个匹配的元素,但不是所有匹配的元素,包括那个匹配(1) select表达式的元素)。我是否误解了css/jquery-selectors的选择概念?
更新1:
我尝试选择的页面是:
http://www.multitran.ru/c/m.exe?l1=1&l2=2&s=hello
更新2:
我的选择器--这是chrome的get xpath工具的结果(我只是想为jquery快速获得一个好的选择器)
发布于 2013-06-04 16:44:29
看一下你链接的页面,你好像没有加载jQuery,我可以看到。您有一个$对象,但是很多东西都使用这个缩写。不过,页面上似乎没有jQuery对象,这让我相信该页面上的任何内容都不是jQuery。
发布于 2013-06-04 16:36:57
jQuery选择器总是返回元素集合,即使只有一个。逻辑上只使用一个元素的方法将只使用集合的第一个元素,即使在具有多个元素的集合上调用也是如此。您可以使用优秀的老式.length属性或现代的oo-fanatic .size()方法检查集合中的元素数量。两者将返回相同的结果。
您可以使用good old for structure遍历集合,并使用collection.eq(i)访问当前元素。或者,也可以使用collection.each(func)在集合的每个元素上执行一个函数。函数func将拥有当前元素,如下所示。
而且,说真的,您不需要在选择器中指定DOM树中的每个元素。当然,jQuery会在html和body中搜索,因为在适当的html文件中没有其他方法。最佳实践是包含用于唯一标识要选择的一个或多个元素所需的最少数量的选择器。永远不要指定html和body。在你的选择器中永远不要有两个in。不要指定tbody,除非你需要的元素也可以出现在and或tfoot中,并且你不需要这些出现。诸如此类的事情。
https://stackoverflow.com/questions/16912780
复制相似问题