Как добавить класс в li, затем ul под li, если щелкнуть любой элемент

0

Я оспариваю проблему и пытаюсь решить ее в течение нескольких часов, но не смог. У меня есть панель sidemenu, которая имеет следующий формат:

<ul class="collapse" id="menu">
    <li class="panel active">// class "active" should be added <a data-target="#dashboard-nav" class="accordion-toggle" data-toggle="collapse" data-parent="#menu" href="#">
            <i class="icon-dashboard"></i> Dashboard <span class="pull-right"><i class="icon-angle-left"></i></span>
        </a>

        <ul id="dashboard-nav" class="collapse in">// class "in" should be added
            <li class=""><a href="#"><i class="icon-angle-right"></i>Default Style</a>
            </li>
            <li class=""><a href="#"><i class="icon-angle-right"></i> Alternative Style</a>
            </li>
        </ul>
    </li>
    <li class="panel"> <a data-target="#registrations-nav" class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#menu" href="#">
            <i class="glyphicon glyphicon-user"></i> Registrations<span class="pull-right"><i class="icon-angle-left"></i></span>
        </a>

        <ul id="registrations-nav" class="collapse">
            <li><a href="#"><i class="icon-plus-sign"></i> Create Registration</a>
            </li>
            <li class="active"><a href="#"><i class="icon-list"></i> List Registration</a>
            </li>
            <li><a href="#"><i class="icon-adn"></i> Manage Registration</a>
            </li>
        </ul>
    </li>
    <li class="panel"> <a data-target="#settings-nav" class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#menu" href="#">
            <i class="icon-wrench"></i> Settings <span class="pull-right"><i class="icon-angle-left"></i> </span>
        </a>

        <ul id="settings-nav" class="collapse in">
            <li class="active"><a href="/ssw/index.php/admin/service/create"><i class="icon-leaf"></i> Services</a>
            </li>
            <li class=""><a href="#"><i class="icon-angle-right"></i> Sites</a>
            </li>
            <li class=""><a href="#"><i class="icon-angle-right"></i> Service Points</a>
            </li>
        </ul>
    </li>
</ul>

После того, как я щелкнул любой элемент <li class="panel"> в него должен быть добавлен класс "active", как <li class="panel active"> а также класс "in" в следующем '<ul> как <li class="panel">... <ul id="dashboard-nav" class="collapse in"> Пожалуйста, дайте мне знать, если я не могу четко объяснить.

заранее спасибо

Теги:

2 ответа

0
Лучший ответ

скрипка DEMO

$('li.panel').click(function () {
    $('li.panel').removeClass('active');//remove active class from all li with class panel
    $('li.panel').children('ul').removeClass('in');//remove in class
    $(this).addClass('active'); // add class active to current li
    $(this).children('ul').addClass('in'); //add in class to the children ul
});

Рекомендации

.addClass()

.removeClass()

.дети()

это ключевое слово

  • 1
    спасибо за быстрый ответ. Я почти достиг, но я должен щелкнуть по элементу $('li.panel') , который будет $('li.panel ul li') . В этом случае, как решить. Пожалуйста, помогите мне.
  • 0
    Однако я исправил проблему с помощью parent (), спасибо за сотрудничество.
Показать ещё 1 комментарий
0

Я сделал для него решение javascript следующим образом:

        window.onload=start;
        function start(){
            var list = document.getElementById("menu").childNodes;
            for(i=0;i<list.length;i++){
                list[i].onclick=clicked;
            }
        }
        function clicked(){
            var input = this;
            input.className = "panel active"
            var child = input.getElementsByTagName("ul")[0];
            child.className = "collaspe in"
        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню