2012-10-05 55 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; 
       } 
      } 
     ); 
相關問題