Список с плюсиками
Всем привет.Создал список вот такой:
<ul id="menu-priem"> <li class="plus level1">ЖКХ <ul class="level2"> <li class="plus">Управляющие компании</li> <li class="plus">ТСЖ</li> </ul> </li><!--1 уровень--> <li class="plus level1">Дороги <ul class="level2"> <li class="plus">Состояние Дорог</li> <li class="plus">Лихачи на дорогах</li> </ul> </li><!--1 уровень--> </ul> Вот код к нему var fdfdfd = 0; jQuery('#menu-priem LI.level1').click(function(){ fdfdfd++;//плюсуем нечетное нажатие if(fdfdfd % 2 !== 0){ jQuery(this).removeClass('plus').addClass('minus'); jQuery(this).find('ul.level2').slideToggle(400); }//Разворачиваем плюс ==> минус else{ jQuery(this).removeClass('minus').addClass('plus'); jQuery(this).find('ul.level2').slideToggle(400); }//Сворачиваем минус ==> плюс }); Проблема когда кликаю на UL.level2 LI (LI второго уровня) сворачивается весь UL.level2 Вопрос:как этого избежать? |
Вот ссылка на живой пример http://kamskie.ru/obsh-priemnaya.
|
Это всплытие событий. Когда вы кликаете по потомку, событие всплывает в поисках обработчика событий по дереву вверх. Чтобы этого не происходило, можно сравнить узел получивший событие и узел-обработчик.
Я ещё немного упростил ваш код: jQuery('#menu-priem LI.level1').click(function(e){ if(e.target === this) { jQuery(this) .toggleClass('plus') .toggleClass('minus') .find('ul.level2') .slideToggle(400); } }); |
Ураааааа заработало!!!!! А расскажите про function(e) поподробнее, если конечно вас не затруднит)))))
|
Все обработчики событий в jQuery принимают в качестве аргумента функцияю обратного вызова. При этом в качестве аргумента этой функции передаётся экземпляр объекта Event. Я обозвал этот аргумент e.
Дальше можно сделать вот так и узнать много интересного: Код:
function(e) { |
Часовой пояс GMT +3, время: 04:20. |