Есть такой кусок кода
this.$root = $(selector);
this.$wrap = this.$root.find('.wrapper');
И в переменную $wrap не присваивается результат
this.$root.find('.wrapper');
Если выводить его просто в console.log, то видно что элемент оно находит. В чем моя ошибка?
constructor(selector) {
this.$root = $(selector);
this.render(); //Сначала рендерим
this.$wrap = this.$root.find('.dropdown__wrap'); // Потом ищем
}
render() {
this.$root.html(template());
}
Вам правильно указали в ответе @Ordman. Я лишь перенёс код и добавил комментариев
const template = () => {
return `
<div class="dropdown__wrap">
Test
</div>
`
}
class Dropdown{
constructor(selector) {
this.$root = $(selector);
this.$wrap = this.$root.find('.dropdown__wrap'); // тут еще нет его
console.log(this.$wrap.length);
this.render(); // появляется после
this.$wrap = this.$root.find('.dropdown__wrap'); // тут есть
console.log(this.$wrap.length);
}
render() {
this.$root.html(template());
}
open() {
this.$wrap.addClass('dropdown__wrap_expanded');
}
close() {
this.$wrap.removeClass('dropdown__wrap_expanded');
}
}
const dropdown = new Dropdown("#dropdown");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="dropdown"></div>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Как развернуть собранное React-приложение на компоненты? Приложение имеет вот такой вид в собранном состоянии у меня на локальном сервере:
Сессия устанавливается после авторизацииЕсли попереключаться по ссылкам внутри сайта, все работает нормально