Jquery 如何选择获得特定css属性的最后一个子级?
我试图选择在隐藏的父元素中获得Jquery 如何选择获得特定css属性的最后一个子级?,jquery,jquery-selectors,Jquery,Jquery Selectors,我试图选择在隐藏的父元素中获得display:block属性的最后一个元素 html: <ul style="display:none;"> <li>1</li> <li>2</li> <li>3</li><!-- my goal is find last visible child on every hidden ul --> <li style="displ
display:block
属性的最后一个元素
html:
<ul style="display:none;">
<li>1</li>
<li>2</li>
<li>3</li><!-- my goal is find last visible child on every hidden ul -->
<li style="display:none;">4</li>
</ul>
$('ul').each(function() {
visibleCountOnEachUl =+ 0;
$(this).children('li').each(function(index) {
if ( $(this).css('display') === 'block' ) {
visibleCountOnEachUl += 1;
$(this).addClass('theseAreVisible');
//this part works;
//i can select elems elems which got display:block
//but can't select the last elem on each ul
//if ( index === (visibleCount-1) ) {
//$(this).addClass('last-visible');
//}
}
});
});
$('ul').find('li:visible:last').addClass('last-visible');
//This won't effect on child elements while their parent is hidden.
我发现这个类似的解决方案适用于可见的父对象。试试这个:
$('ul').each(function() {
$(this).children('li').each(function(index, elem) {
var l = $(elem).parent().find('li').filter(function() {
return $(this).css('display') === 'block';
}).length;
if (index == l-1)
$(this).addClass('last-visible');
});
});
当父级显示为“显示:块:
$('ul li:visible:last').addClass('select');
当父对象为“显示:无”时,应将元素定位为绝对、可见性:隐藏或将其定位到视口之外
if( $('ul').css('display','none') ){
$('ul').css({
'display':'block',
'position': 'absolute',
'visibility': 'hidden'});
$('ul li:visible:last').addClass('select');
}
我正试图找到最后一个
li
,它得到了display:block
属性?这有意义吗?是的,有意义,但当父级显示none
时,这不起作用,因为所有子级li
都将返回displaynone
->仔细检查每个功能,它可以选择具有display:block
属性的元素,并且只更改它们的html值:@Barlas-这是否符合您的要求???您试图解决的问题是什么?隐藏父项的所有子项也将被隐藏,因此我不确定这种方法是否特别可靠/有用。@DavidThomas我正在尝试计算每个ul
属性中获得display:block
的所有子项,然后查找最后一个属性。我明白了,但一旦获得最后一个元素,您想做什么?为什么你需要找到它呢?在我的项目中,有必要在这些元素@DavidThomas上定义不同类型的设计