Как дублировать класс
Есть такой код:
<ul> <li>text</li> <li>text</li> <li class="show">text</li> <li>text</li> </ul> Класс show добавляется и исчезает автоматически к одному li. Как сделать что бы когда класс show добавляется, вместе с ним добивился класс и к остальним li? Вот так: <ul> <li class="show">text</li> <li class="show">text</li> <li class="show">text</li> <li class="show">text</li> </ul> и также исчезали, если класс отсутствует. https://codepen.io/anakin-skywalker94/pen/KjwKGG Спасибо! |
ethereal,
может изменить функцию, которая ставит класс, а не ставить "сторожа"? |
Тут не так все просто, если изменить функцию - не будет все правильно работать
|
ethereal,
:-? |
Цитата:
Цитата:
|
Неужели нету возможность на JS это сделать?
|
Цитата:
Цитата:
|
Я говорю про дополнительный код, не связаный с функцией.
Я сделал вот так:
$( '.menu-navigation li' ).click(function() {
setTimeout(function(){
$(".show").siblings().toggleClass('show');
}, 2000);
});
Классы добавляется как надо, только уже не удаляются. |
ethereal,
измените функцию которая ставит класс!!! |
Это framework. Я не хочу менять что бы не испортить что то.
|
Цитата:
Сложно ли выучить новый framework? На самом деле нет, вот, например, μ-framework hyperapp, я о нём ещё 20 минут назад ничего не знал, решил посмотреть в интернете, какие есть, и был приятно удивлён разнообразию. hyperapp позволяет декларативно описать ваш интерфейс. Легко расширяется при помощи JSX. Ваш пример с использованием hyperapp...
<!DOCTYPE html>
<html lang="en">
<body>
<div id="app"></div>
<style>
ul>li:not(.show) {
text-decoration: line-through;
}
</style>
<script type="module">
import { h, app } from "https://unpkg.com/hyperapp@2.0.0-beta.22/src/index.js";
const items = ["text 1", "text 2", "text 3", "text 4"];
app({
init: () => false,
view: state => h("ul", {}, items.map(item =>
h("li", {
class: state ? "show" : "",
tabIndex: 0,
onFocus: state => true,
onBlur: state => false
}, item))
),
node: document.getElementById("app")
})
</script>
</body>
</html>
Насчёт jQuery, те кто его используют, ощущают низкий уровень удовлетворённости. jQuery является технологией, которую лучше избегать в настоящий момент. |
Malleys,
:victory: |
Malleys,
спасибо за hyperapp, но никак не пойму зачем менять DOM по каждому клику, если нужно изменить только класс и чем плохо jQuery?
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style>
ul>li:not(.show) {
text-decoration: line-through;
}
ul>li:focus{
outline: none;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(() =>{
const items = ["text 1", "text 2", "text 3", "text 4"],
html = items.map(text => $("<li>",{tabIndex: 0, text})),
li = $("<ul>", {html})
.replaceAll("#app")
.on("focusin focusout", "li", ({type}) => li.toggleClass("show", type == "focusin")).
find("li");
});
</script>
</head>
<body>
<div id="app"></div>
</body>
</html>
|
| Часовой пояс GMT +3, время: 20:57. |