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

时间:2016-02-09 02:18:02

标签: javascript jquery javascript-events

目标

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

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

  3. 如果选择了allSearch,然后选择notAllSearch,则取消选择allSearch。

  4. 问题

    目标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>
    

    JS:

    $(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 个答案:

答案 0 :(得分:1)

试试这个:而不是ID在CLASS上工作

$(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