代码之家  ›  专栏  ›  技术社区  ›  thesowismine

从下拉列表中选择选项时,JS未按预期工作

  •  0
  • thesowismine  · 技术社区  · 10 年前

    球门

    1. 单击的成员 <ul> 选择/取消选择它。

    2. 如果选择了class=allSearch,则取消选择已选择的任何其他li。

    3. 如果选择了allSearch,但未选择allSearch则取消选择allSearch。

    问题

    目标3不起作用,这对我来说没有意义,因为它应该(而且是)基本上与目标2中使用的代码相同。

    下面是代码:

    HTML语言

    <ul class="menu vertical" id="searchMenu">
        <li id="allSearch" class="allSearch selected">All</li>
        <li id="notAllSearch" class="notAllSearch">User</li>
        <li id="notAllSearch" class="notAllSearch">Artists</li>
        <li id="notAllSearch" class="notAllSearch">Events</li>
    </ul>
    

    简体中文:

    $(document).ready(function() {
    $('#searchMenu li').click(function () {
        if ($(this).hasClass('selected')) {
            $(this).removeClass('selected');
            }
        else if ($(this).hasClass('notAllSearch')) {
            $('#allSearch').removeClass('selected')
            $(this).addClass('selected');
        }
        else if ($(this).hasClass('allSearch')) {
            $('#notAllSearch').removeClass('selected')
            $(this).addClass('selected');
        }
        else
            $(this).addClass('selected');
    });
    })
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   kanudo    10 年前

    试试这个:不要在CLASS上使用ID

    $(document).ready(function() {
    $('#searchMenu li').click(function () {
        if ($(this).hasClass('selected')) {
            $(this).removeClass('selected');
        }
        else if ($(this).hasClass('notAllSearch')) {
            $('.allSearch').removeClass('selected')
            $(this).addClass('selected');
        }
        else if ($(this).hasClass('allSearch')) {
            $('.notAllSearch').removeClass('selected')
            $(this).addClass('selected');
            }
        else
            $(this).addClass('selected');
        });
    });
    

    这是 pen to test