Вот рабочий codepen .
1) Вы связываете событие click с .tile
, .subTile
являются дочерними узлами .tile
, а не братьями и сестрами.
2) this.classList != "active"
всегда будет возвращать true
, потому что classList равен title
или title active
.
И нет необходимости проверять перед переключением класса, поэтому просто используйте this.classList.toggle("active");
3) var panel = $('.tile').nextAll();
panel
здесь есть объект jQuery, но не элемент DOM, вы не можете изменить стиль с помощью panel.style.display = "...";
.
, так какздесь вы используете jQuery, это можно сделать с помощью show()
или hide()
, как показано ниже.
// this here is the element that just being clicked,
// $("ul,li", this) equals $(this).find("ul,li")
var $panel = $("ul,li", this); // add a $ sign to remind it's a jQuery object
this.classList.contains("active") ? $panel.show() : $panel.hide();
Обратите внимание, что вам может понадобиться закомментировать .tile
'height: 60px;
вCSS.