如何选择器和gt工作?它们的顺序是一样的吗? (如果它们都在同一个选择器中)
我对这个问题需要两个答案。
1)以下行的结果不应该总是0 ???我问那些指数大于3且小于2的指数。有索引可能是:ix> 3& ix< 2同时!!
$("tr").find("td:gt(3):lt(2)").length
2)事实证明,当我改变选择器gt的顺序时,它开始工作正常。以下行的结果为0。
$("tr").find("td:lt(2):gt(3)").length
选择者的顺序不应该与结果不一致吗?
如果选择器lt不能正常工作,如果它是在gt之后或类似的东西!
其他信息:
谢谢!
迭
答案 0 :(得分:5)
问题是jQuery按顺序运行其选择器,而不是将它们编译成一个选择器。因此:gt(3):lt(2)
表示“查找集合中索引超过3的所有元素,然后在返回的集合中查找索引小于2的所有元素”。转动td:lt(2):gt(3)
会改变逻辑的顺序,因此会得到不同的结果。
在你的例子中:
<table>
<tr>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</table>
:gt(3)
仅提供最终元素,因为它是索引大于3的唯一元素。因此,您有以下选择(来自Chrome控制台):
[<td>4</td>]
运行:lt(2)
显然没有效果,因为集合中的一个元素的索引为0,低于2.
在原始集上执行:lt(2)
会得到以下结果:
[<td>0</td>, <td>1</td>]
对此运行:gt(3)
显然会删除集合中的所有元素,因为它们分别具有索引0和1,两者都不大于3.
答案 1 :(得分:1)
在第一次过滤后,索引会重新编制索引,这是顺序的。
1)想象一下你的td包含5个元素。
2)在这种情况下
答案 2 :(得分:1)
试试这个
$("tr").find("td").slice(startindex,endindex)
由于
Sumesh