Список с плюсиками
Всем привет.Создал список вот такой:
<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, время: 13:49. |