2013-07-10 73 views
0

我有兩個元素(一個是按鈕),並希望當我按下按鈕時,另一個元素會淡入並保持。只有當我再次按下按鈕時,它纔會淡出。現在我得到的是在我再次按下按鈕之前它會自動淡出。我需要使用什麼樣的「停止」?謝謝。jquery:fadeout在淡入後立即發生

的Jquery:

$(document).ready(function(){ 
    $("#first").click(function() { 
    $("#box").fadeIn("slow"); 
    }); 

    $("#first").click(function() { 
    $("#box").fadeOut("slow"); 
    }); 
}); 

回答

4
$(document).ready(function(){ 
    $("#first").click(function() { 
    $("#box").fadeToggle("slow"); 
    }); 
}); 

點擊添加了功能疊加的事件發生時正在發生作用。在你的代碼中,當用戶點擊元素時,你可以同時做兩件事。

+0

你說得對,就這麼簡單。非常感謝你! – user2564649

+1

不要忘了選擇答案,如果它幫助你。 – Shomz

0

您還可以指定按鈕狀態......這將爲各種職能的工作,即使是那些不具備切換版本它們(如fadeToggle)。就像這樣:

var buttonFaded = false; 
$(document).ready(function(){ 
    $("#first").click(function() { 
     if (buttonFaded) { 
      $("#box").fadeIn("slow"); 
      buttonFaded = true; // even better to put this inside the fadeIn callback 
     else { 
      $("#box").fadeOut("slow"); 
      buttonFaded = false; 
     } 
    }); 
}); 

編輯

如果你只需要最基本的用法,@ FSW的例子很好地工作。但是,如果你需要任何自定義/更復雜的用法,你必須做這樣的事情。

p.s.問候downvoter - 希望你會明白有一天

+0

+1確實你有這種方式更多的控制。你也可以使用像http://stackoverflow.com/questions/11524541/jquery-fadetoggle-different-actions-if-element-is-visible-or-not來檢查fadeToggle做了什麼。 – fsw

+1

@fsw是的,這一切都取決於你需要什麼。我習慣這樣做,因爲通常有更多的事情與按鈕的狀態相關,而不僅僅是淡入淡出效果,甚至與按鈕無關......在這種情況下,您使用的jQuery越少,更好(比如每次你需要檢查可見屬性):) – Shomz

0

我會嘗試這樣的:

$(document).ready(function(){ 
    $("#first").on('click', (function() { 
    //check #box visibility state 
    if($('#box').is(':visible')){ 
     $('#box').fadeOut('slow'); 
    } 
    else{ 
     $('#box').fadeIn("slow"); 
    } 
});