如果variable = number,请执行X,否则不执行任何操作

时间:2012-01-21 20:27:05

标签: jquery if-statement expand var

我写了一个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 个答案:

答案 0 :(得分:7)

此...

    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本地处理该处理程序,以便内部的所有代码都可以使用它。

答案 1 :(得分:3)

您在函数内声明局部变量,因此它们彼此独立。此外,每次都会得到一个新变量,因此之前的值不会持续存在。

此外,在分配变量之前,您正在调用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函数没有基数参数。

答案 2 :(得分:0)

labelstatus将不会设置为1,因为此功能已在之前的行中返回。