У меня явно отсутствует что-то фундаментальное, когда дело доходит до jQuery, анонимных функций и задержек.jQuery класс переключения с задержкой работает только один раз
Следующий код работает только на загрузку одной страницы (он добавит класс, а затем удалит его через 1 секунду, а если я снова нажму, он добавит класс, но НИКОГДА не удалит класс на время страница, если я не перезагрузите страницу):
var jElement = $(currElem);
jElement.addClass("highlight")
.delay(1000)
.queue(function(){
$(this).removeClass("highlight");
});
ОДНАКО,
если добавить несуществующий вызова функции() в качестве параметра, и я называю это в моей анонимной функции, то добавить/удалить комбинацию классов будет работать бесконечно.
var jElement = $(currElem);
jElement.addClass("highlight")
.delay(1000)
.queue(function(randomFunction){
$(this).removeClass("highlight");
randomFunction(); //this makes it seemingly 'miraculously' work??
});
Side Примечание:
var jElement = $(currElem);
jElement.addClass("highlight")
.delay(1000)
.queue(function(randomFunction){
$(this).removeClass("highlight");
// this does NOT work; if I dont actually call the 'randomFunction'
// so that function, even though it does nothing; must somehow cause
// the implicit call of 'dequeue()' ??
});
Расскажите, пожалуйста, что именно вы пытаетесь достичь с помощью приведенного выше кода. – Venemo
Я пытался подражать «временной подсветке» для любого поля ввода, которое не содержало достоверной информации. [Для скрипта проверки формы]. Я заметил, что мой точный код работает независимо от того, включена ли функция, которую я передаю, с именем «next» или нет. Может ли кто-нибудь объяснить это поведение? Его недостаточно, чтобы просто передать функцию, вы также должны вызвать ее внутри анонимной функции. Я мог видеть, как перегрузка функций может вызывать это неявное поведение «dequeue()», но сам триггер существует ВНУТРИ анонимной функции. –