1

好吧,我正在研究一个轻量级的简单下拉列表。我遇到了这个小问题:

<script>
$(document).ready(function () {
$('ul li:first a').click(function () {
    if ($(this).attr('class') != 'active') {
        $('.hideContent').slideUp(300);
        $('.showContent').removeClass('active');
        $(this).addClass('active').next('ul').slideDown(300);
        event.stopPropagation();
    }
    else {
        $(this).removeClass('active');          
        $('.hideContent').slideUp();
    }       
});
});
</script>

:first 仅触发第一个 ul。我现在使用多个 uls:

    <ul>
    <li><a href="#"><span class="plus">+</span><span class="minus">-</span>Administração</a>
        <ul class="hideContent">
            <li><a href="#">Item</a></li>
            <li><a href="#">Item</a></li>
            <li><a href="#">Item</a></li>
            <li><a href="#">Item</a></li>
            <li><a href="#">Item</a></li>
        </ul>
    </li>
</ul>
    <ul>
    <li><a href="#"><span class="plus">+</span><span class="minus">-</span>Administração</a>
        <ul class="hideContent">
            <li><a href="#">Item</a></li>
            <li><a href="#">Item</a></li>
            <li><a href="#">Item</a></li>
            <li><a href="#">Item</a></li>
            <li><a href="#">Item</a></li>
        </ul>
    </li>
</ul>

:first 不应该触发每个 ul 的第一个 li?还是我的工作方式错误?

提前致谢。

4

1 回答 1

4

首先只匹配一个元素,尝试使用:first-child

虽然这仅匹配单个元素,但 :first-child 可以匹配多个:每个父元素一个。

http://api.jquery.com/first-selector/

于 2012-09-25T16:24:50.523 回答