2016-05-14 2 views
2

Я добавляю класс .error на клик и теперь после интервала времени в 2 секунды Я хочу удалить этот класс, но без перезагрузки страницы/refresh. Я использовал delay() в jQuery as:Добавить, затем удалить класс после задержки, но без обновления страницы

$('#username').addClass('error').delay(2000).removeClass('error'); 

но это не работает.

Тогда я попробовал setTimeout().

Это рабочая, но перезагружаемая страница. Я хочу что-то добавить, а затем удалить класс после определенного времени, но не обновлять/перезагружать страницу.

Пожалуйста, помогите, и спасибо заранее.

+4

не может использовать 'задержки()' для методов, которые не являются * "queueable" * как анимация. Пожалуйста, покажите свой код. Нет причин, по которым 'setTimeout()' будет перезагружать страницу самостоятельно – charlietfl

+0

Это мой код (и его перезагрузка страницы, которая не нужна): $ ('# username'). AddClass ('error'). SetTimeout (функция() {\t \t \t \t $ (этот) .removeClass ('error'); \t}, 2000); – vinayofficial

+0

, который будет вызывать ошибку, потому что вы пытаетесь связать 'setTimeout()' как метод jQuery, когда это глобальная функция окна. Я предполагаю, что вы используете это в обработчике отправки формы, и ошибка прерывает обработчик отправки и форма отправляется по умолчанию. – charlietfl

ответ

2

Использование JQuery и функции SetTimeout:

var $elm = $("#username").addClass("error"); 
 
setTimeout(function() { 
 
    $elm.removeClass("error"); 
 
}, 2000);
.error{ 
 
    color:red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="username">USER NAME</div>

+0

Это ответ jQuery. – doug65536

+1

@ doug65536 Да, потому что ОП пытался в jquery не в чистом javascript, спасибо –

4

var element = document.getElementById('username'); 
 

 
element.classList.add('error'); 
 

 
window.setTimeout(function() { 
 
    element.classList.remove('error'); 
 
}, 2000);
#username { 
 
    width: 100%; 
 
    height: 50px; 
 
    line-height: 50px; 
 
    color: white; 
 
    background-color: green; 
 
    text-align: center; 
 
    transition: background-color .25s linear; 
 
} 
 
#username.error { 
 
    background-color: red; 
 
}
<div id="username">Username</div>

+0

Вы должны проверить, есть ли класс уже там. – Tomato

+0

Это не обязательно. Если класс уже существует, он просто не добавит его. –

+0

Да, но через 2 секунды он удалит его, что может быть неожиданным. – Tomato

Смежные вопросы