#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть три возможных случая для div — у него либо есть class .first или .last, либо нет.
Мне нужно изменить содержимое другого div на основе этих классов, но я делаю что-то не так…
Может кто-нибудь помочь мне и сказать, что я делаю не так?
jQuery(document).ready(function () {
if (jQuery('.pricing-plan').hasClass('first')) {
jQuery('.tagline').text('primeiro');
}
else if (jQuery('.pricing-plan').hasClass('last')) {
jQuery('.tagline').text('ultimo');
}
else {
jQuery('.tagline').text('nada');
}
});
Комментарии:
1. Опубликуйте скрипку или свою структуру HTML
2. Я не вижу никаких ошибок в опубликованном коде jQuery.
3. Вы все делаете правильно
4.Единственный случай, когда это не сработает: если вы назначили класс динамически, после
DOMContentLoaded
того, как он уже был запущен.5. @JoakimM Конечно. Но DOM можно манипулировать после того, как этот скрипт уже выполнен. @shaunakde — о да, у него может быть несколько
.pricing-plan
элементов, некоторые из них с классом, другие без класса.first
/.last
Ответ №1:
- У вас есть несколько элементов с классом
.pricing-plan
и.tagline
. В таких случаях вы должны использовать.each()
для перебора каждого элемента. -
Внутри каждого, чтобы получить контекст текущего
.pricing-plan
использования$(this)
-
В вашем текущем коде селектор
jQuery('.pricing-plan')
только что вернулся / проверен первым.pricing-plan
Проверьте это,
jQuery(document).ready(function () {
jQuery('.pricing-plan').each(function () {
if (jQuery(this).hasClass('first')) {
jQuery(this).find('.tagline').text('primeiro');
} else if (jQuery(this).hasClass('last')) {
jQuery(this).find('.tagline').text('ultimo');
} else {
jQuery(this).find('.tagline').text('nada');
}
});
});
Комментарии:
1. ОТЛИЧНО!! Спасибо!! Можете ли вы сказать мне, что я делал не так?
2. Добавил точки в ответ, у вас было несколько классов с одинаковыми именами.