Показать сообщение отдельно
  #1 (permalink)  
Старый 08.04.2021, 22:53
Аспирант
Отправить личное сообщение для tp-20 Посмотреть профиль Найти все сообщения от tp-20
 
Регистрация: 19.06.2018
Сообщений: 43

data атрибуты - из JS в jQuery
Задача: сделать на jQuery кнопку-переключатель тем - со светлой на тёмную.
на чистом JS работает, а на jQ не могу подобрать соответствующие функции.

всё, что мне надо, это по первому клику добавить к html дата-атрибут data-theme='dark'. И по второму клику - убрать атрибут. И так циклично.

не могу найти аналоги в jQuery для функций hasAttribute, removeAttribute и setAttribute.

Пример переключения темы:



дальше весь код.

const toggleBtn = document.querySelector("#toggle-theme");

        toggleBtn.addEventListener('click', (e) => {
            console.log("Switching theme");
            if (document.documentElement.hasAttribute('theme')) {
                document.documentElement.removeAttribute('theme');
            }
            else {
                document.documentElement.setAttribute('theme', 'dark');
            }
        });


<nav class="navbar">Title</nav>
    <div class="container">
        <div>
            <input type="button" value="Light/Dark" id="toggle-theme" />
            <label for="darkness">
                Darkness
            </label>
        </div>

        <h2 class="title">What is Lorem Ipsum?</h2>
        <p class="content">
            Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy
        </p>
    </div>

<style>  
        :root {
            --red-hue: 360;
            --blue-hue: 240;
            --green-hue: 120;
            --main-hue: var(--red-hue);
            --theme-darkness: 1;
            --nav-bg-color: hsl(var(--main-hue), 50%, 50%);
            --nav-text-color: hsl(var(--main-hue), 50%, 10%);
            --container-bg-color: hsl(var(--main-hue), 50%, 95%);
            --content-text-color: hsl(var(--main-hue), 50%, 50%);
            --title-color: hsl(--main-hue, 50%, 20%);
            --footer-bg-color: hsl(var(--main-hue), 93%, 88%);
            --button-text-color: hsl(var(--main-hue), 50%, 20%);
            filter: brightness(var(--theme-darkness));
        }

        :root[theme='dark'] {
            --red-hue: 360;
            --blue-hue: 240;
            --green-hue: 120;
            --main-hue: var(--blue-hue);
            --theme-darkness: 1;
            --nav-bg-color: hsl(var(--main-hue), 50%, 90%);
            --nav-text-color: hsl(var(--main-hue), 50%, 10%);
            --container-bg-color: hsl(var(--main-hue), 50%, 95%);
            --content-text-color: hsl(var(--main-hue), 50%, 50%);
            --title-color: hsl(--main-hue, 50%, 20%);
            --footer-bg-color: hsl(var(--main-hue), 93%, 88%);
            --button-text-color: hsl(var(--main-hue), 50%, 20%);
            filter: invert(1) brightness(var(--theme-darkness));
        }

        body {
            height: 100%;
            display: flex;
            flex-direction: column;
        }
        nav {
            background: var(--nav-bg-color);
            color: var(--nav-text-color)
        }
        .container {
            flex: 1;
            background: var(--container-bg-color);
        }
        p.content {
            color: var(--content-text-color)
        }
        .container h2.title {
            color: var(--title-color)
        }
</style>

Последний раз редактировалось tp-20, 08.04.2021 в 22:56.
Ответить с цитированием