onClick срабатывает вторым из-за Hover на телефоне
Компонента:
return < li className={edit ? "task task--bg" : "task"}>
{edit
? <InputEdit
setUpdateValue={updateTask}
valueProps={item.text}
item={item} />
: <>
<div className="task__info info-task">
<label className="info-task__checkbox">
{isChecked ? <img src={isSuccess} alt="isSuccess" /> : ""}
<input id="checkbox" type="checkbox" checked={isChecked || ""} onChange={setCheckedTask} />
<span></span>
</label>
{isChecked
? <p className="info-task__text" style={{ textDecoration: "line-through", color: "#EB5757" }}>{item.text}</p>
: <p className="info-task__text" >{item.text}</p>}
{withEmpty && <Badge text={item.listTitle} color={item.color} />}
</div>
<div className="task__icons">
<img className="icon--edit" src={iconEdit} alt="iconEdit" onClick={() => setEdit(true)} />
<img className="icon--delete" src={iconDelete} alt="iconDelete" onClick={() => deleteTask(item.id)} />
</div>
</>
}
</li >
CSS:
.task:hover {
background-color: #ffffff8b;
border-radius: 10px;
}
.task__icons img {
opacity: 0;
}
.task:hover .task__icons img {
opacity: 1;
}
Checkbox на телефоне не срабатывает с первого раза из-за hover на родителе. Как сделать, чтобы checkbox срабатывал сразу при первом клике на телефоне?
Ответы (1 шт):
Автор решения: Danil Apsadikov
→ Ссылка
Попробуй вместо события onclick использовать touchstart touchend. Пример с JQuery
$('class').bind('touchstart', function(){
//some action
});
$('class').bind('touchend', function(){
//set timeout and action
});