Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 第n个孩子选择器,有点奇怪_Jquery_Html_Jquery Selectors - Fatal编程技术网

Jquery 第n个孩子选择器,有点奇怪

Jquery 第n个孩子选择器,有点奇怪,jquery,html,jquery-selectors,Jquery,Html,Jquery Selectors,小提琴在这里- 这里是HTML- <div class="parent"> <div class="a">Class A</div> <div class="b">Class B1</div> <div class="b">Class B2</div> <div class="b">Class B3</div> <div class="b"&g

小提琴在这里-

这里是HTML-

<div class="parent">
    <div class="a">Class A</div>
    <div class="b">Class B1</div>
    <div class="b">Class B2</div>
    <div class="b">Class B3</div>
    <div class="b">Class B4</div>
    <div class="b">Class B5</div>
</div>​
上面我已经写了
.b:nth child(2)
,为什么我不能选择
class=“b”
的第二个元素呢

我想突出显示B2类
颜色:红色
,但我得到B1类
颜色:红色
。伙计们,有什么问题吗?如果这就是它的工作原理,那么根据我的说法,这是这种选择器的一个缺陷

小提琴只是想让你们知道我的问题是什么,但在我真正的问题中,我有
n个孩子(2)
作为
n个孩子(j+1)
,其中
j
也扮演着其他角色,它不能使它成为
j+2

任何人都可以告诉我突出显示的解决方法,B2类将选择第n个子项。因此,如果指定2,它将执行第二步。如果需要第三个,请指定3

看看他们的例子

$("ul li:nth-child(2)")
John
Karl - 2nd!
Brandon
我不明白为什么您不能使它成为
j+2

将选择
n
子级。因此,如果指定2,它将执行第二步。如果需要第三个,请指定3

看看他们的例子

$("ul li:nth-child(2)")
John
Karl - 2nd!
Brandon

我不明白为什么不能将其设置为
j+2
,因为第n个孩子的jquery文档索引不是零基的。它从1开始。

因为第n个孩子的jquery文档索引不是零基的。它从1开始。

为什么不使用
:eq(2)
而不是
:第n个孩子(2)
。 为了得到B2,你需要写:

$(".parent").children(".b:eq(1)").css("color", "red");
更新

对于您最初的问题,为什么第n个孩子(2)没有选择第二个孩子,我找到了原因。我发现:

:nth child(n)伪类很容易与:eq(n)混淆,甚至 尽管这两种方法可能会产生截然不同的匹配元素。 对于:n个子项(n),将计算所有子项,无论它们是什么 是,并且仅当指定的元素与 附加到伪类的选择器。带有:eq(n)仅选择器 附加到伪类的已计数,但不限于 任何其他元素,并选择第(n+1)个元素(n是基于0的)

那么你的情况呢

$(“.parent”).children(“.b:nth child(2)”).css(“颜色”、“红色”)


:n子元素(2)
计算
.parent
的子元素,并且仅当元素为
.b
时才返回。为什么不使用
:eq(2)
而不是
:n子元素(2)
。 为了得到B2,你需要写:

$(".parent").children(".b:eq(1)").css("color", "red");
更新

对于您最初的问题,为什么第n个孩子(2)
没有选择第二个孩子,我找到了原因。我发现:

:nth child(n)伪类很容易与:eq(n)混淆,甚至 尽管这两种方法可能会产生截然不同的匹配元素。 对于:n个子项(n),将计算所有子项,无论它们是什么 是,并且仅当指定的元素与 附加到伪类的选择器。带有:eq(n)仅选择器 附加到伪类的已计数,但不限于 任何其他元素,并选择第(n+1)个元素(n是基于0的)

那么你的情况呢

$(“.parent”).children(“.b:nth child(2)”).css(“颜色”、“红色”)


:第n个子项(2)
计算
.parent
的子项,并且仅当元素为
.b

时才返回。jQuery
第n个子项
源自CSS规范。因此,它是1索引的,而不是0索引的。好吧,那么为什么我不能选择class=“b”的第二个子项呢?jQuery
n子项
是从CSS规范派生的。因此,它是1索引的,而不是0索引的。那么为什么我不能选择class=“b”的第二个子级呢?