尝试使用if语句分配jQuery值

时间:2012-06-30 00:34:12

标签: jquery variables if-statement

我有不同的“抽屉”,可以根据我页面上的导航链接滑动打开和关闭。我正在使用一些jQuery来打开和关闭它们,并根据哪个“抽屉”打开来更改页面背景和链接颜色。

我也使用一些jQuery来淡化链接上的悬停颜色。一切正常,除了在mouseout上获得返回NEW基色的链接。它始终默认为原始css值。所以,我知道我必须进入下面并根据我希望链接在mouseout上返回的颜色来更改.mouseout颜色。

如果我只是设置一个变量,如下例所示,一切都很好,它的工作效果非常好。

    var originalColor = "#123456";

    jQuery.fn.linkFader = function(settings) {
      settings = jQuery.extend({
        returnColor: originalColor,
        color: '#8dc63f',
        duration: 600
      }, settings);
      return this.each(function() {
        $(this).mouseover(function() { $(this).stop(true, true).animate({ color: settings.color },settings.duration); });
        $(this).mouseout(function() { $(this).stop(true, true).animate({ color: settings.returnColor },settings.duration); });
        $(this).click(function() { $(this).stop(true, true).animate({ color: settings.color },settings.duration); });
      });
    };

    $(document).ready(function() {
      $('.fader').linkFader({
      });
    });

但是......如果我尝试像下面那样分配变量“originalColor”,它就会失败。我需要脚本来确定哪个“抽屉”是打开的,并将变量设置为正确的颜色。我在这里做错了什么?

      var originalColor='';
      if($('#drawerA').is(":visible")){
        var originalColor = "#123456";
      }

      if($('#drawerB').is(":visible")){
        var originalColor = "#456789";
      }

1 个答案:

答案 0 :(得分:2)

具有可见性的元素:隐藏或不透明度:0被视为可见,因为它们仍占用布局中的空间。 - jQuery API

这就是为什么你的第二个如果总是被击中。

您必须使用display: none

隐藏它

<强> FYI

可见元素是

的元素
  • 设为display:none
  • 使用type="hidden"
  • 表单元素
  • 宽度和高度设置为0
  • 隐藏的父元素(这也隐藏子元素)