jQuery. Обращаемся к дочерним элементам по клику на родителя.

Решила описать, т.к. хоть действия и простейшие, но  у меня с первой попытки без багов реализовать нужную  задачку не получилось.

Честно говоря, я не знаю можно ли в вордпрессе прям красиво сделать вывод html, css и js, чтобы наглядно получилось, так что только код.

Например, имеем подобную структуру:

div

Нужно, чтобы по клику на заголовок, список пользователей сворачивался, стрелочка у заголовка переворачивалась и менялась прозрачность заголовка. Реализовывала с помощью jQuery, получилось в итоге так:

$(document).ready(function(){

//обращаемся к заголовку элемента team_group(мои грабли — обращалась в первом варианте реализации не именно к заголовку, а ко всему блоку, в итоге при клике по всей области team_group, участники группы сворачивались(блондинка, да))

   $(«.team_group»).children(«h3»).click(function () {

// меняем прозрачность заголовка, если на него уже был клик и прозрачность = 0,7, то при следующем клике меняем ее на 1. Тут из интересного, если в скобочках у css не передавать значение свойства, то мы получаем существующее значение этого свойства и в итоге можем его с чем-либо сравнить.
   $(this).css(«opacity», $(this).css(«opacity») == «0.7» ? «1» : «0.7»);

// аналогично изменению css-свойства меняем src у картинки(в данном случае переворачиваем стрелочку)
   $(this).children(«img»).attr(«src»,$(this).children(«img»).attr(«src») == «images/arrow_up.png» ? «images/arrow.png» : «images/arrow_up.png»);

//а это самая интересная и забавная запись, мне кажется) Т.к. первой строкой обращались к заголовку(h3), а не к team_group, то в this у нас этот заголовок и попадает и дальше идет поиск по детям h3, и уж .team_person там нет. Так что с пом-ю parent() поднимаемся на уровень выше и вуаля! Может, это не самый красивый способ, так что буду рада советам;)
   $(this).parent().children(«.team_person»).toggle();

});

 

P.S. Может, мой читатель расскажет, почему css знает, что такое hover, а что такое click нет? 🙂

 

You may also like

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *