2012-10-05 54 views
0

我相信这是一个简单的问题,并且有明显的答案,但事实是我无法解决这个问题。基本上,如果div被点击,并且变量存在,那么做到这一点,如果没有,就这样做。但没有一个可行。JQuery标志不起作用

想法?

$("#lisea").click(
      var set = false; 
      if(set) { 
       function() { 
        $("body").animate({ 
        opacity: 1 
        }, 500); 
        var set = false; 
       } 
      } 
      if(!set) { 
       function() { 
        $("body").animate({ 
        opacity: 0.25 
        }, 500); 
        var set = true; 
       } 
      } 
     ); 
+0

集的范围将永远是假的,因为您在每次点击时都将其设置为false –

+0

将当前内容点击包装到一个函数中。检查设置变量。 – Alfabravo

+0

我认为他知道那部分 – AlienWebguy

回答

3

你需要你的代码中的回调函数内 - 不只是作为一个参数。你也只是在你的情况下定义一个函数 - 你需要调用它。

无论如何,我认为这可能是你想要的东西:

var set = false; 
$("#lisea").click(function(){ 
    $('body').stop().animate({ 
     opacity: (set) ? 1 : 0.25 
    }, 500); 
    set = !set; 
}); 

这里有一个演示:http://jsfiddle.net/upqTZ/

+0

或者你可以完全删除函数 –

0

删除所有的“变种”,它应该工作。你在不同的作用域中声明了许多变量。 也不确定'set'是否是某个关键字..所以最好使用其他一些变量名称。像“if_flag_set”

+0

而且是..它应该是$(“#lisea”)。click(function(){...加上第一行set = false会如果你声明一个没有'var'的变量,它就会变成全局的! – Umair

+0

'Set'不是JavaScript中的保留字。好主意,但。 – AlienWebguy

0

试试这个..你似乎一再声明相同的变量.. 移动你的声明单击事件..

var set = false; 
$("#lisea").click(
      if(set) { 
       function() { 
        $("body").animate({ 
        opacity: 1 
        }, 500); 
        set = false; 
       } 
      } 
      if(!set) { 
       function() { 
        $("body").animate({ 
        opacity: 0.25 
        }, 500); 
        set = true; 
       } 
      } 
     ); 
相关问题