jquery:如何过滤具有特定数量子级的元素
jquery : How to filter elements which have more than a specific number of children?
如何选择具有多个子元素的元素?
我有这样的东西:
<ul>
<li>foo<li>
<li>foo<li>
<li>foo<li>
</ul>
<ul>
<li>foo<li>
<li>foo<li>
</ul>
<ul>
<li>foo<li>
<li>foo<li>
<li>foo<li>
</ul>
我现在正在使用这样的东西:
$('ul').each(function() {
if ($(this).children().length > 2) {
// do something
}
});
我想知道是否有更好的方法来选择孩子的数量?
或者有更好的方法吗?
至少有一个较短的
$('ul:has(li:eq(2))')
只有直系亲属的孩子,如果这是一个问题,你可以做
$('ul:has( > li:eq(2))')
选择有3个或更多孩子的任何UL(eq为零(
FIDDLE
这应该有效:
var listsWithMoreChildren = $('ul').filter(function( index ) {
return $(this).children().length > 2;
});
listsWithMoreChildren.css('background-color', '#ff0');
有关筛选器功能的更多信息,请阅读文档。http://api.jquery.com/filter/
$('ul').each(function() {
if ($(this).find('li').length > 2) {
alert('hi');
}
});
使用find计算ul可用的子项数。
演示:
http://jsfiddle.net/7GX9F/1/
var i = 0;
$('ul').each(function (index, ele) {
if ($(this).children().length > 0) i++;
})
alert('Total UL with children LI : ' + i);
FIDDLE
http://jsfiddle.net/nraina/GckZL/
相关文章:
- jQuery只过滤可见元素
- 在 Android WebView 中过滤 DOM 元素,而无需 jQuery
- JSON 填充的表单元素不使用 angularJs 过滤器进行过滤
- Angular:如何根据模型中过滤的元素数量隐藏DOM元素
- 过滤具有2个选择列表的元素
- 使用 lodash 过滤一个数组的元素与另一个数组的元素
- 如何将数组添加到对象中,但为每个数组元素过滤掉除一列之外的所有列
- Knockoutjs 模板:在通过某些属性过滤该数组后,如何将 1 个对象数组用于 2 个 DOM 元素
- Jquery 元素的高级过滤
- AngularJS重复使用表格和行跨度以及元素过滤
- 如何根据 css 属性值过滤 HTML 元素
- jQuery .not() 没有从函数 - Ideas 中过滤元素
- 在页面问题上过滤 HTML 元素
- 强制 ng 重复元素在过滤后重绘
- 使用 jQuery 过滤元素
- 过滤无线电元素
- 去掉js模板,过滤可观察数组的第一个元素
- 在Angular中动态选择元素过滤
- 使用JavaScript中的过滤元素属性创建对象
- AngularJS在数组的子元素上过滤列表