Если переменная = число, делай X, иначе ничего не делай - PullRequest
4 голосов
/ 22 января 2012

Я написал код jquery, который будет расширять определенные элементы при наведении курсора.Я хочу, чтобы код расширялся, только если не расширен.Вот мой кодКажется, он работает неправильно.

$(document).ready(function() {
    var labelstatus = 0;
});
$(document).ready(function() {
    $("a.rm").hover(function () {
        if (labelstatus != 1){
            $("#expensereduction,#envimpact,#mtextlft,#initaud,#energaud").fadeOut();
            var currentFontSize = $('.initiate').css('font-size');
            var currentFontSizeNum = parseFloat(currentFontSize, 10);
            var newFontSize = currentFontSizeNum*3;
            $('.initiate').delay(500).animate({
                fontSize: newFontSize
            });
            return false;
            var labelstatus = 1;
        }
        else {
        }
    });
});

Ответы [ 3 ]

7 голосов
/ 22 января 2012

это ...

    return false;
    var labelstatus = 1;

должно быть ...

    labelstatus = 1;
    return false;

... и это ...

$(document).ready(function() {
    var labelstatus = 0;
});

должно быть ...

var labelstatus = 0;

  • Код, который следует после оператора return, не будет выполняться

  • Использование var делает labelstatus локальным для функции

  • Вам действительно не нужно два $(document).ready(function() { вызова.Поместите свой код в один, и вы можете сделать labelstatus локальным для этого обработчика, чтобы весь код внутри мог использовать его.

3 голосов
/ 22 января 2012

Вы объявляете локальные переменные внутри функций, поэтому они не зависят друг от друга. Кроме того, вы каждый раз получаете новую переменную, поэтому предыдущее значение не сохраняется.

Кроме того, вы вызываете return перед присвоением переменной, которая выйдет из функции, поэтому назначение никогда не произойдет.

Вам необходимо объявить переменную в области видимости вне функций:

$(document).ready(function() {

  var labelstatus = 0;

  $("a.rm").hover(function () {
    if (labelstatus != 1){
      $("#expensereduction,#envimpact,#mtextlft,#initaud,#energaud").fadeOut();
        var currentFontSize = $('.initiate').css('font-size');
        var currentFontSizeNum = parseFloat(currentFontSize);
        var newFontSize = currentFontSizeNum * 3;
        $('.initiate').delay(500).animate({
            fontSize: newFontSize
        });
        labelstatus = 1;
        return false;
    }
    else {
    }
  });

});

Также: функция parseFloat не имеет параметра radix.

0 голосов
/ 22 января 2012

labelstatus не будет установлен на 1, так как функция уже возвращена в строке ранее.

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