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,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<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>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(function() {
$("#toggle-theme").on("click", function() {
$("html").is("[theme]") ? $("html").removeAttr("theme") : $("html").attr("theme", "dark")
})
});
</script>
</head>
<body>
<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>
</body>
</html>
|
| Часовой пояс GMT +3, время: 17:08. |