为什么在jQuery

时间:2016-02-20 14:16:06

标签: jquery jquery-selectors

我有一个包含3个输入字段的表单。 HTML看起来像:

<label>Name </label> <input .../>
<label>Email </label> <input .../>
<label> Password </label><input .../>

我留下输入代码的代码,因为这里没有相关性。现在在脚本部分,我想添加一个彩色的&#39;在我的一些<label>标签中用#333标记这些标签的背景(好吧,不要介意目标。我知道通过简单地包装所需的标签来选择我的标签非常容易类或id中的标签。但我正在练习,想要使用更复杂的jQuery选择器选择元素)。我试过这个:

$('label:nth-child (1)').add ('label:nth-child (2)').addClass ('colored')

但它只对第一个标签(具有值名称的标签)着色。怎么了?

1 个答案:

答案 0 :(得分:2)

这是一种常见的误解。出于与:nth-child一起使用的索引的目的,元素是否是标签并不重要。标记中没有label:nth-child(2),因为:nth-child(2)元素是input(假设您显示的内容位于其父元素的开头)。

你可以通过jQuery .eq method来实现你想要做的事情:

$('label:nth-child (1)').add($('label').eq(1)).addClass('colored');

(与:nth-child不同,.eq的索引从零开始)

或更有可能:

$('label').eq(0).add($('label').eq(1)).addClass('colored');