我的HTML页面中有nested lists
,这些列表由jQuery代码管理,该代码为用户提供了向列表节点添加行和子项的交互。每个列表都可以包含div
,用于将新列表添加为子列表。
我的问题是我想在我可以创建的元素的深处添加一个动态限制器:
<ul>
<li>
<ul>
<li><div class="add-child"></div></li>
<li><div class="add-child"></div></li>
<li><div class="add-row"></div></li>
</ul>
</li>
<li><div class="add-child"></div></li>
<li><div class="add-child"></div></li>
<li><div class="add-row"></div></li>
</ul>
将来可能会发生变化,我知道如果我想使用a max of 3 levels of deepness
,我可以简单地使用这样的静态选择器:
$('li li li .add-child').remove();
但是我想要一个动态解决方案来通过PHP设置深度,然后通过jQuery限制它,我的方法怎么可能呢?
答案 0 :(得分:3)
$('.add-child')
.filter(function(){
return $(this).parents('li').length > 2;
})
.remove();
我知道,你说你不需要插件,但我无法抗拒:D
$.fn.filterIfHasNParents = function(n, selector){
var depth = n || 1;
return $(this).filter(function(){
return $(this).parents(selector || '').length > depth - 1;
});
}
然后将其用作:
$('.add-child').filterIfHasNParents(3, 'li').remove();
答案 1 :(得分:2)
你的意思是这样的吗?
$( '.add-child' ).each( function() {
if( $( this ).parents( 'li' ).length > someDepthSetByPHP )
{
$( this ).remove();
}
} );