Применить text-decoration: линия до сгенерированных флажков

Я заканчиваю последнюю часть приложения со списком задач, которое я создаю. В основном пользователи создают задачи, которые отображаются на экране вместе с флажком и значком корзины справа от него. По большей части приложение работает как надо. Последнее, что мне нужно сделать, это сделать так, чтобы, когда пользователь щелкает флажок, срабатывал эффект text-decoration:line through и вычеркивал соответствующий элемент списка. Раньше у меня это работало, но мне пришлось изменить некоторые вещи, чтобы изменение размера экрана выглядело лучше. Теперь мой старый способ не работает. Я опубликую некоторый код, и если кто-нибудь знает, как я могу заставить это работать, я был бы очень признателен. Всем спасибо!

Input:checked + li css ниже — это то, что изначально работало до того, как мне пришлось изменить порядок создания элементов списка.

    ul {
text-align:right; /*This pushes the checkbox/trash can right while the <li> in the js file floats the todo text left*/
list-style-type:none;
padding-left:0px; /*Makes up for not having the bullet point spacing on smaller screens*/ 
font-size:24px;
color:white;
font-weight:600;
}
li {      
text-align:left;
}
input:checked + li {     /*<<<<<------This is what I was using before and it worked*/
  text-decoration:line-through;
}


.todo-item::after {
  content: "";
  clear: both;
  display: table;  
}

.todo-item {
  text-align: right;
}

.todo-item .todo-label {
  display: block;
  float: left;
  max-width: 80%; /*  you can increase the size */
  text-align: left;
  /* you can use this props if you don't want another line 
  white-space: nowrap; 
  text-overflow: ellipsis; 
  overflow: hidden; */

}
    </style>
</head>
<body>
    <div class = "header">
        <div class = "container" style = "padding-top:50px;"> 
            <div class = "row justify-content-center"> <!--Input Box-->
                <div class = "col-sm-12 col-lg-8">
                    <h1>To-Do List</h1>
                    <div class = "form-group">
                        <input type = "text" class = "form-control" id = "task">
                    </div>
                </div>
            </div>
            <div class = "row"> <!--Add Button-->
                <div class = "col"></div>
                <div class = "col-xs-2" style = "margin-right:15px; margin-top:30px;">
                    <button id = "add" style = "border-radius:50%; font-size:35px; width:65px;" class = "btn btn-danger">+</button>
                </div>
            </div>
        </div>
    </div>
        <div class = "container text" style = "display:inline-block;"> <!--ToDos-->
            <div class = "row justify-content-center" style = "margin-top:20px;"> 
                <div class = "col-sm-12 col-sm-8">
                    <div id = "todos"></div>
                </div> 
            </div>
        </div>
<script src = "todo.js"></script>
</body>
</html>

Вот javascript, используемый для разработки элементов списка задач. До перестановки флажок генерировался перед элементом списка задач. Теперь его перенесли на «после». Я подумал, что могу просто изменить порядок css или, возможно, убрать раздел li и заменить его классом. Мне тут не очень повезло.

function show() {
var todos = get_todos();

var html = '<ul>';
for(var i=0; i < todos.length; i++) {
    html += '<li class = "todo-item">' + 
      '<span class = "todo-label">' + todos[i] + '</span>' +
      '<input class = "checkBox" type = "checkbox">' +
      '<button class = "remove" id = "' + i  + '">' + 
      '<i class = "fa fa-trash" aria-hidden = "true"></i>' + 
      '</button>' +
  '</li>';
};
html += '</ul>';    
document.getElementById('todos').innerHTML = html;

var buttons = document.getElementsByClassName('remove');
for (var i=0; i < buttons.length; i++) {
    buttons[i].addEventListener('click', remove);
};
}

Применить text-decoration: линия до сгенерированных флажков

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
540
1

Ответы 1

Довольно простой способ добавить эффект сквозной линии при щелчке по флажку и удалить эффект, когда флажок снят, — это использовать метод toggle для переключения готового класса с эффектом сквозной линии. Этот класс не должен быть включен по умолчанию, потому что вам не нужен эффект сквозной линии сразу. Когда вы установите флажок, он включит класс. Когда вы снимите флажок, он отключит класс.

HTML должен быть примерно таким:

<ul>
    <li> Todo Item <input .....> </li>

Затем создайте класс CSS для переключения вашего кода:

.lineThrough {
    text-decoration: line-through;
}

Код jQuery будет выглядеть так:

$("ul").on("click", "li", function(){
    $(this).toggleClass("lineThrough");
});

Другие вопросы по теме