Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何选择获得特定css属性的最后一个子级?_Jquery_Jquery Selectors - Fatal编程技术网

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
都将返回display
none
->仔细检查
每个功能,它可以选择具有
display:block
属性的元素,并且只更改它们的html值:@Barlas-这是否符合您的要求???您试图解决的问题是什么?隐藏父项的所有子项也将被隐藏,因此我不确定这种方法是否特别可靠/有用。@DavidThomas我正在尝试计算每个
ul
属性中获得
display:block
的所有子项,然后查找最后一个属性。我明白了,但一旦获得最后一个元素,您想做什么?为什么你需要找到它呢?在我的项目中,有必要在这些元素@DavidThomas上定义不同类型的设计