可以直接选择第一个后代
Can first descendent be selected directly?
我目前正在使用find()
和first()
方法从包含parent
类的每个<div>
元素中选择第一个后代元素。但我发现这很麻烦,因为find()
方法会在选择第一个元素之前生成一组匹配的元素。以下是我的代码的骨架:
.HTML
<div class=parent>
<ul>
<li>random characters</li>
<li>random characters</li>
<li>random characters</li>
<li>random characters</li>
</ul>
</div>
<div class=parent>
<ul>
<li>random characters</li>
<li>random characters</li>
<li>random characters</li>
<li>random characters</li>
</ul>
</div>
<div class=non-parent>
<ul>
<li>random characters</li>
<li>random characters</li>
<li>random characters</li>
<li>random characters</li>
</ul>
</div>
<div class=parent>
<ul>
<li>random characters</li>
<li>random characters</li>
<li>random characters</li>
<li>random characters</li>
</ul>
</div>
// .....the list continues
爪哇语
$('.parent').each(function() {
$(this).find('ul li').first().css('color', 'red');
// do other stuff (on other elements) within each loop
});
我见过有人使用$(".parent li:first")
选择器。但是,因为我是在循环中做的,所以我不确定如何或是否可以做到这一点,并希望得到一些建议。谢谢。
澄清:
我需要在循环each
HTML 中未显示的其他元素上做其他事情。谢谢。
如果要遍历每个父元素中的第一个元素,可以执行以下操作:
$('.parent ul li:first-child').each(function() {
$(this).css('color', 'red');
// do other stuff within each loop
});
不过,这不必在循环中完成,因为 .css()
方法将对所有匹配的元素进行操作。这也有效:
$('.parent ul li:first-child').css('color', 'red');
这将改变所有这些。
如果要遍历所有li
,另一个选项是:
$('.parent ul li').each(function() {
if($(this).is(":first-child"))
$(this).css('color', 'red');
// do other stuff within each loop
});
更新:如果要遍历每个父项而不是随后执行其他检查,则以下内容将很有用:
$('.parent').each(function() {
// I assume that even if other uls are in parent, the ul you target is first
$(this).find("ul li:first-child").first().css('color', 'red');
// do other stuff within each loop
});
如果您坚持同时使用外部循环和:first
选择器,请使用以下命令:
$('.parent').each(function() {
$(this).find('li:first').css('color', 'red');
// do other stuff within each loop
});
请注意,以下内容将不起作用:
$('.parent li:first').css('color', 'red');
....因为它将简单地选择所有.parent
元素中的第一个li
后代。
看看这个 http://api.jquery.com/first-child-selector/
顺便说一下,你不需要前锋...!将您的 css 修改直接应用于集合!
$('.parent ul li:first-child').css('color', 'red');
请参考这个工作示例 http://jsfiddle.net/9ej5H/
请注意,Zee Tee 答案也可以,但可读性较差。
您始终可以使用索引选择器:$(".parent ul li:eq(0)")
或
$(".parent ul li").eq(0)
请注意:0
是第一个。
相关文章:
- 使用数据上的角度更改设置集合的第一个元素的动画
- 当单击第一个李时,它显示内容一,当单击第二个李时,它显示内容二
- 字母计数:返回重复字母数最多的第一个单词
- 如何使用Javascript在HTML表中查找第一个空行
- 分页:如何用AJAX加载第一个页面
- 全局标志仅与第一个匹配项匹配的Regexp
- 访问ng repeat中的第一个项目
- 使用jQuery只返回选中复选框后的第一个表单元格值
- 使用jQuery插入HTML页面的第一个项目缺少结束标记
- 关闭第二个事件源上的第一个事件源's onopen方法
- 无法获取vis.js最后一个或第一个选定的网络节点
- 如何设置第一个手风琴面板关闭
- 使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript
- jQuery空选择,但不是第一个选项
- JavaScript Regex 将单词替换为其第一个字母,除非在括号内
- 在Jquery中选择第一个搜索项而不单击它
- Thunderbird,如何以编程方式选择第一个选项卡
- 第一个字第一个字符第二个字第二个字符,一直到数组结束
- Spring WebFlow2 Javascript只在第一个单选按钮上工作
- 可以直接选择第一个后代