У меня есть повторяющийся компонент с элементом управления, который переключается между отображением 2 изображений (мобильного изображения и изображения рабочего стола).Мне нужно, чтобы каждый элемент управления переключал только тот компонент, в котором он находится, и функционировал независимо от других компонентов.
Я могу генерировать уникальные идентификаторы для всех элементов управления, уникальные идентификаторы для всех изображений и по нажатию кнопки IЯ могу добавлять / удалять классы, а также показывать / скрывать изображения.Моя проблема в том, что я не знаю, как связать идентификатор элемента управления переключением с идентификатором изображения, так что я меняю только один компонент.Прямо сейчас я нацеливаюсь на класс (который одинаков для каждого компонента), поэтому все переключается, когда вы щелкаете элемент управления.
Это внутри Wordpress с использованием Visual Composer, поэтому я не верю, что могу использоватьцикл для рендеринга повторяющихся компонентов.
JSFiddle Здесь
ниже - это один компонент, который будет повторяться несколько раз
<div class="wrapper">
<div class="platform-toggle">
<div class="mobile-toggle">
mobile
</div>
<div class="desktop-toggle">
desktop
</div>
</div>
<div class="platform-images">
<img class="mobile-image" src="https://via.placeholder.com/100x100.png?text=mobile" />
<img class="desktop-image" src="https://via.placeholder.com/100x100.png?text=desktop" />
</div>
</div>
$.each($('.platform-toggle'), function(ind) {
$(this).attr('id', 'platform-toggle_' + parseInt(ind + 1));
});
$.each($('.mobile-toggle'), function(ind) {
$(this).attr('id', 'mobile-toggle_' + parseInt(ind + 1));
});
$.each($('.desktop-toggle'), function(ind) {
$(this).attr('id', 'desktop-toggle_' + parseInt(ind + 1));
});
$.each($('.mobile-image'), function(ind) {
$(this).attr('id', 'mobile-image_' + parseInt(ind + 1));
});
$.each($('.desktop-image'), function(ind) {
$(this).attr('id', 'desktop-image_' + parseInt(ind + 1));
});
$(".mobile-toggle").click(function() {
if ($(".mobile-toggle").hasClass("inactive")) {
$(".mobile-toggle").removeClass("inactive");
$(".mobile-toggle").addClass("active");
$(".mobile-image").show()
$(".desktop-toggle").removeClass("active");
$(".desktop-toggle").addClass("inactive");
$(".desktop-image").hide()
}
});
$(".desktop-toggle").click(function() {
if ($(".desktop-toggle").hasClass("inactive")) {
$(".desktop-toggle").removeClass("inactive");
$(".desktop-toggle").addClass("active");
$(".desktop-image").show()
$(".mobile-toggle").removeClass("active");
$(".mobile-toggle").addClass("inactive");
$(".mobile-image").hide()
}
});