$(".gallery__item div").on({
mouseenter: function () {
$(this).text($(this).data('text'));
},
mouseleave: function () {
$(this).text("");
}
});
Ну и сам текст стилизовать - добавить z-index для отображения сверху оверлея, позиционирование и так далее.
Текст лучше заключить во внутренний селектор и работать с ним.
olya_097, так а в чём проблема при помощи $('.selector').data('text') вытащить нужный текст и вставить в нужное место, хоть через text(), хоть подставив при помощи append()?
olya_097, у вас в вашем примере вообще дублируется текст в data-атрибуте - он присутствует и в изображениях-карточках, и в элементах слайдера. Имеет смысл оставить их где-то в одном месте и использовать в нужное время.
Чтобы текст в слайдере менялся, его стоит засунуть в сам слайд, а не прикручивать к оверлею. Так, чтобы нужный текст был связан с нужным слайдом. Для этого в элементе (например) inner__image можно создать еще один слой для текста, например, .inner_text, и подставлять его как-то так:
$('.gallery__image').on('click', function() {
var item = $(this).data('index');
var text_val = $(this).data('text');
/* Ваш код */
$('.slide-item[data-index="' + item + '"]').find('.inner_text').text(text_val);
});
olya_097, я адаптировал код под ваши нужды и всё работает:
$(document).ready(function(){
$('.gallery__image').each(function() {
var item = $(this).data('index');
var text_val = $(this).data('text');
$('.slide-item[data-index="' + item + '"]').find('h3').text(text_val);
});
});
Скрипт автоматически проставляет соответствующим слайдам текст из data-атрибутов картинок, по которым был клик. Сравнение идёт по data-index. Попробуйте на вашем примере, только добавьте h3 везде в слайдере после div.inner__image.
Вы зачем-то переместили вот эту строчку: $('.overlay-img').addClass('overlay-active');
Из вашего блока, обрабатывающего клик, в мой блок, где я присваивал текстовое значение. Оттуда и проблемы.
Вот полностью весь код JS, вставьте его и убедитесь в том, что все работает.