@OneTwoThreeFourFive

Как добавить class к динамически добавленным элементам на JQ?

Здравствуйте. Есть календарь, который получает мероприятия через ajax. Мне нужно добавить class к ссылке на мероприятие. Обычный способ не работает потому что при загрузке страницы нет ссылок на мероприятие, они появляются чуть позже, когда вернутся данные. Я пробовал использовать событие on("click", ...), но это работает только при клике на кнопку. А мне нужно сразу при загрузке страницы, как только появятся ссылки. Ещё я пробовал $( document ).ajaxComplete(function() { }); и это работает, но после следующего ajax запроса, класс удаляется с уже добавленных элементов. Подскажите пожалуйста как добавить класс к элементу, как только он появится на странице.
  • Вопрос задан
  • 373 просмотра
Решения вопроса 1
@OneTwoThreeFourFive Автор вопроса
Всем спасибо за ответы. Решил велосипедом. Раньше это $( document ).ajaxComplete(function() { ... }); работало 1 раз после запроса, а при переключении месяца (следующий/предыдущий) класс удалялся. Добавил код при клике на эти кнопки добавлять класс. И это работает, класс добавляется уже к существующим и после ajax запроса, и с высотой всё нормально.
// После ajax запроса добавить класс
$( document ).ajaxComplete(function() {
    $("a.link-event").addClass("circle");
});

// При клике на кнопку "следующий" или "предыдущий" месяц добавить такой же класс
$( document ).on( "click", ".month-button", function() {
   $("a.link-event").addClass("circle");
});


Если вы знаете вариант лучше, напишите в комментариях
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
А зачем вам добавлять класс?
Создайте нормальный селектор, прицепите к нему стили и будет вам счастье.
.calendar div.someClass>a {
    color: red;
}

этот css назначит красный цвет ссылке непосредственно вложенной в div с классом .someClass, который в свою очередь имеет одним из родителей .calendar.
И этот стиль будет применяться к каждой подходящей ссылке, когда бы вы ее не добавили.
Ответ написан
Jeer
@Jeer
уверенный пользователь
Привет!
Попробуй навешивать события через метод live, он предназначался как раз для таких ситуаций.
Но, как мне подсказали пару месяцев назад, этот метод выпилили с какой-то версии jQuery и теперь с динамически созданными элементами нужно работать через data-* аттрибуты
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы