如果ul内的任何li都有课程

时间:2019-06-05 06:44:05

标签: javascript jquery html

我需要编写一条if语句,如果ul中的任何li具有某个类,则需要在另一个div中插入一些文本,如果该类在ul的列表项中不存在,则需要插入不同的文字。 这是我尝试过的:

<div class="ae-dropdown dropdown">
    <div class="ae-select">
        <span class="ae-select-content"></span>
    </div>
    <ul class="dropdown-menu ae-hide">
        <li class='selected'><a>Dr</a></li>
        <li><a>Mr</a></li>
        <li><a>Miss</a></li>
        <li><a>Mrs</a></li>
        <li><a>Ms</a></li>
    </ul>
</div>
<div class="ae-dropdown dropdown">
    <div class="ae-select">
        <span class="ae-select-content"></span>
    </div>
    <ul class="dropdown-menu ae-hide">
        <li><a>Dr</a></li>
        <li><a>Mr</a></li>
        <li><a>Miss</a></li>
        <li><a>Mrs</a></li>
        <li><a>Ms</a></li>
    </ul>
</div>

JS:

var newOptions = $('.dropdown-menu > li');

newOptions.click(function() {

    if ($('.dropdown-menu > li').hasClass('selected')) {

        $('li.selected').closest('.ae-dropdown').find('.ae-select-content').text($('.dropdown-menu > li.selected').text());

    } else {

        $('li').closest('.ae-dropdown').find('.ae-select-content').text('All');

    }
});

这里也是fiddle

2 个答案:

答案 0 :(得分:2)

合并:has()> (immediate child)选择器,如下所示:

$('ul:has( > li.selected)')​

您可以在此处查看演示,仅当直子

  • 具有class =“ whatever”时才匹配,而没有>,则任何子孙具有该类时都将匹配。

    或者,选择另一种方式:

    $("li.selected").parent("ul");
    

    这将仅找到具有该类的元素的所有直接.parent()。

  • 答案 1 :(得分:0)

    如果您将选择所有具有该类别的下拉列表li的长度与所有下拉列表li的长度进行比较,该怎么办?

    $('.dropdown-menu > li.selected').length == $('.dropdown-menu > li).length