Как дублировать класс
Есть такой код:
<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, время: 06:39. |