#jquery #if-statement
Вопрос:
Я пытаюсь обучить себя некоторым базовым jquery, и у меня возникают проблемы с утверждением if, которое я пытаюсь использовать. Мой код выглядит следующим образом:
var animate = 0;
$('a').click(function () {
if (animate == 0) {
$('#shadow').fadeOut(500);
var animate = 1;
}
});
Я надеюсь использовать некоторые другие операторы в дальнейшем, чтобы в зависимости от значения «анимировать» он выполнял другое действие jquery при нажатии. Я уверен, что упустил что-то очевидное, но я бьюсь головой о стену, пытаясь понять, что это такое.
Любая помощь будет весьма признательна!
Ответ №1:
Когда вы используете var
объявление переменной, она становится локальной переменной, что означает, что она является новой в этой области.
Быстрый (и грязный) способ для вас достичь желаемой цели-это что-то вроде:
var animate = 0;
$('a').click(function() {
if (animate === 0) {
$('#shadow').fadeOut(500);
animate = 1; // note the lack of "var"
}
});
Обратите внимание , что это, вероятно, довольно несовершенное решение; в частности animate
, оно не возвращается к 0 (хотя вы можете сделать это с помощью функции обратного вызова в качестве второго аргумента fadeOut
).
Еще лучшим решением, вероятно, является размещение (и удаление) класса в конкретном элементе, с которым вы работаете:
$('a').click(function() {
if (!$('#shadow').hasClass('animating')) {
$('#shadow').addClass('animating').fadeOut(500, function() {
$(this).removeClass('animating');
});
}
});
Однако я не знаю подробностей вашей реализации, поэтому я позволю вам выяснить, что подходит для ваших конкретных потребностей.
Ответ №2:
Вы не var
должны снова использовать ключевое слово при присвоении 1 animate
. Делая это, вы вызываете синтаксическую ошибку, так animate
как она уже была объявлена в той же области.
Комментарии:
1. И вот так проблема решена — урок усвоен, большое спасибо.
Ответ №3:
Вы переопределяете анимацию, используя var внутри функции click.
менять
var animate = 1;
Для
animate = 1;
Это позволит вам установить значение переменной animate во внешней области, а не анимировать, которую вы создаете в области в функции click.
ХТХ