为什么在 jQuery 中使用 `add()` 时选择没有扩展
Why is the selection not extended when using `add()` in jQuery
我有一个包含 3 个输入字段的表单。 HTML 看起来像:
<label>Name </label> <input .../>
<label>Email </label> <input .../>
<label> Password </label><input .../>
我留下了输入标签的代码,因为这与此处无关。现在在脚本部分,我想在我的一些 <label>
标签中添加一个 class 'colored',用 #333 为这些标签的背景着色(嗯,不要介意目标。我知道 select 我的标签非常容易,只需将所需的标签包装在 class 或 id 中即可。但是我正在练习,想要 select 使用更复杂的元素 jQuery select或)。我试过这个:
$('label:nth-child (1)').add ('label:nth-child (2)').addClass ('colored')
但它只为第一个标签着色(标签的值为 Name)。怎么了?
这是一个常见的误解。对于与 :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');
我有一个包含 3 个输入字段的表单。 HTML 看起来像:
<label>Name </label> <input .../>
<label>Email </label> <input .../>
<label> Password </label><input .../>
我留下了输入标签的代码,因为这与此处无关。现在在脚本部分,我想在我的一些 <label>
标签中添加一个 class 'colored',用 #333 为这些标签的背景着色(嗯,不要介意目标。我知道 select 我的标签非常容易,只需将所需的标签包装在 class 或 id 中即可。但是我正在练习,想要 select 使用更复杂的元素 jQuery select或)。我试过这个:
$('label:nth-child (1)').add ('label:nth-child (2)').addClass ('colored')
但它只为第一个标签着色(标签的值为 Name)。怎么了?
这是一个常见的误解。对于与 :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');