JQuery + If заявление - PullRequest
3 голосов
/ 18 мая 2011

Я пытаюсь научить себя некоторым базовым jquery и у меня проблемы с оператором if, который я пытаюсь использовать. Мой код выглядит следующим образом:

var animate = 0;

$('a').click(function () {
if (animate == 0) {
$('#shadow').fadeOut(500);
var animate = 1;
}
});

Я надеюсь использовать еще несколько операторов в дальнейшем, чтобы в зависимости от значения "animate" при щелчке он выполнял различные действия jquery. Я уверен, что упустил что-то очевидное, но я бьюсь головой о стену, пытаясь понять, что это такое.

Любая помощь будет наиболее ценится!

Ответы [ 3 ]

6 голосов
/ 18 мая 2011

Когда вы используете 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');
        });
    }
});

Однако я не знаю деталей вашей реализации, поэтому я позволю вам выяснить, что подходит именно вам.необходимо.

5 голосов
/ 18 мая 2011

Вы не должны снова использовать ключевое слово var при назначении 1 для animate.При этом вы вызываете синтаксическую ошибку, поскольку animate уже объявлено в той же области.

2 голосов
/ 18 мая 2011

Вы переопределяете animate, используя var внутри функции click.

изменить

var animate = 1;

до

animate = 1;

Это позволит установить значение переменной animate во внешней области видимости, а не анимацию, создаваемую в области действия в функции click.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...