Оператор jQuery If

#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.

ХТХ