我有一个包含ul
个组的容器,每个容器有4个li
个。
我创建了第一个ul
,然后通过Javascript复制其余部分。
当我打电话找到所有ul
的第n个孩子时,例如$("ul:nth-child(1)")
,它什么都不返回,第一个ul
项目出现$("ul:nth-child(2)")
(n正在开始)来自2)
但是当我尝试对li
内的ul
执行相同操作时,第一个li
项目出现$("ul li:nth-child(1)")
(n从1开始)
我在jQuery 1.11.1中开发,但是当使用1.11.0时,小提琴给出相同的结果(因为它们还没有从菜单中获得1.11.1)
我错过了什么或是jQuery中的错误吗?
参考: 在Windows 7企业版/英语版
下在Chrome 40.0.2214.93 m中测试编辑:(更精确的愿望)
我并不是要找li
,因为我知道如何确切地找到哪个li
和哪个li与“>”虽然我的意思是甚至对ul元素和li元素使用相同的算法,但它给出了不同的结果。
我想使用nth-child在所有ul中找到(2n-1)ul,但它会给出错误的结果。我必须使用(3n-1)来找到每隔3个ul,因为起始元素比预期的要多1个。
(基于上面的例子,检索每3 ul
个元素)
start from first `ul` element amongst 15 `ul`s (skip every 3 ul element)
the first ul element in the set $(".keywords ul:nth-child(1)")
give nothing (not as expected)
eg. $(".keywords ul:nth-child(3n-1)"), when n = 1, first element is 2, the starting element in the set is 2.
为什么还有1个元素级联?
(仅使用第一个列表来测试检索每3 li
个元素)
$(".keywords ul:eq(0) li:nth-child(2n-1)")
the first li element in the set $(".keywords ul:eq(0) li:nth-child(1)")
give the first element.(as expected) when n = 1, first element is 1, as expected.
因此,对于示例中的指定ul和li,跳过似乎不同。
虽然我仍然可以执行所需的结果,但在应用于ul
时,它会级联1个元素。
答案 0 :(得分:1)
ul:nth-child
与li:nth-child
的含义不同。在第一种情况下,您正在寻找一个ul
元素,它是其父元素的第n个子元素。在第二个中,您正在查找列表中的第n个li
。
答案 1 :(得分:0)
您需要使用后代选择器
$(".main-area .list-container .keywords ul > li:nth-child(1)").length
演示:Fiddle
您的选择器会尝试在ul
内找到.main-area .list-container .keywords
并且是其父级的第一个子元素。