У меня есть несколько компонентов Switch input type="checkbox"
на странице, и я хочу переключить класс .active
для этих по отдельности через addEventListner()
. Я использую ваниль, а не jQuery.
У меня он работает на элементе first , но ни один из остальных не работает. Мне нужно, чтобы все они работали независимо.
Очевидно, я не нацеливаюсь на «это» правильно. Я сделал отдельные удары по нему, используя комбинации объявления функции, выражения, стандартного синтаксиса функции и стрелки. С помощью стрелки я стремился использовать лексическую область видимости, чтобы повлиять на правильную область видимости «this».
Вот Codepen с 3 попытками; откройте консоль для просмотра переключателя класса .active
на элементе first .
Вот один из примеров (также в пере):
// Working on ONE checkbox:
let fireMySwitch = function(inputType, className) {
let mySwitchInput = document.querySelector(`input[type=${inputType}`);
mySwitchInput.addEventListener('change', function (event) {
!this.checked ? this.classList.remove(className) : this.classList.add(className);
}, false);
}
fireMySwitch('checkbox', 'active');
Вот разметка :
<div class="cell my-switch__block">
<p class="my-switch__copy">Switch</p>
<div class="switch large">
<input class="switch-input" id="yes-no_2" type="checkbox" name="mySwitch_2">
<label class="switch-paddle" for="yes-no_2">
<span class="show-for-sr">Switch</span>
<span class="switch-active" aria-hidden="true">Yes</span>
<span class="switch-inactive" aria-hidden="true">No</span>
</label>
</div>
</div>
Кто-нибудь может посоветовать, как правильно настроить таргетинг на каждый элемент независимо для переключения класса?