2012-06-30 34 views
0

我有不同的“抽屉”,滑动打开和关闭响应我的网页上的导航链接。我使用一些jQuery将它们打开和关闭,并根据打开的“抽屉”更改页面背景和链接颜色。试图分配jQuery值与if语句

我还使用一些jQuery来淡化链接上的悬停颜色。一切都工作正常,除了让鼠标悬停的链接返回到新的基本颜色。它总是默认为原始的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

也许没有抽屉是可见的,所以无论if语句被触发?你可以试试'if/else'而不是2'if's。如果我是对的,它总是会采用'else'子句。 –

+0

假设它们中的一个是可见的,它应该可以工作,但是你并不真正需要在'if'语句正文中赋值前的'var'关键字。 –

+0

“drawerA”默认是可见的。 – Rob

回答

2

元素与visibility:hidden的或不透明度:0被认为可见,因为他们仍然在消耗布局空间。 - jQuery API

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

您有display: none

隐藏它FYI

可见元素是元素:与type="hidden"

  • 设置为display:none
  • 表单元素
  • 宽度和高度设置为0
  • 隐藏的父元素(这还隐藏子元素)
+0

它隐藏着显示:none – Rob

+0

当然可以。正是根据名单 –

+0

是的,所以,如果隐藏div的方法是正确的。为什么我的代码不工作? – Rob