看《jQeury 權威指南》時看到這個toggle()方法。因為之前在慕課網學習接觸過。發現兩者講的有細微的不同
以隱藏/顯示目標元素效果為例,慕課網是這樣講解的
$("#clickId").toggle( function(){$('#divId').hide();}, //方法之間以逗號隔開 function(){$('#divId').show();} );
點擊ID名為clickId的按鈕,第一次會執行第一個function來隱藏ID名為divId的塊。第二次點擊會顯示。第三次點擊再次執行隱藏,以此類推。
同樣一個功能,而《jQeury 權威指南》中是這樣講解用法的。
$("#clickId").click(function() { $("divId").toggle(); })
使用toggle()的無參數方法來
同樣的隱藏/顯示目標元素的效果,《jQuery 權威指南》的處理方式顯得更加簡潔。使用無參方法時,只有2種狀態。但是當需要切換2種以上的狀態時,就只能使用慕課網的方法了。下面講解toggle()方法可以實現多函數綁定
<body> <input id="btntest" type="button" value="點一下我" /> <div>你好,請選擇佳麗</div> <script type="text/javascript"> $(function(){ $("#btntest").toggle( function(){ $("div").html("1號范冰冰"); },function(){ $("div").html("2號李冰冰"); },function() { $("div").html("3號楊冪"); },function() { $("div").html("4號姚晨"); } ) }) </script> </body>
以下是運行結果。可見toggle()方法可以綁定多個函數,使用相當靈活。
toggle有3種調參的方法。上面講了第一種無參使用方法,下面是第二種
toggle(switch)
switch是布爾類型的 數值是true或者false (若使用布爾值。則無法使用第三種speed參數方法)
var intI = 0;
var blnA = intI > 1; //獲取邏輯值false;
$("img").toggle(blnA);
此時的blnA值是false。所以他能將"img"圖片隱藏。
第三種是
$(selector).toggle(speed,callback)
speed是觸發事件后執行的事件,可能的值:
- 毫秒 (比如 1000 也就是1秒)
- "slow"(0.6秒)
- "normal"(0.4秒)
- "fast"(0.2秒)
在設置速度的情況下,元素從可見到隱藏的過程中,會逐漸地改變其高度、寬度、外邊距、內邊距和透明度。也就是動畫效果了
callback是整個toggle()方法執行完之后觸發的事件,和上面的多函數綁定是不同的,一定要設置speed參數才能使用callback參數。
在1.8.2及之前的版本可以使用toggle,但在1.9版本之后就將其刪除了(挺好用的,不知道為什么刪除了=.=!)
那么就要用手動方式來代替他了,或者使用過渡版本的jQuery,下面是手動方式。
//使用toggle方法時
$('button').click(function(){$("img").toggle();}) //手動實現toggle()方法 $('button').click(function(){ if($("img").is(":hidden")){ $("img").show(); }else{ $("img").hide(); } })
部分數據參考w3school
http://www.w3school.com.cn/jquery/effect_toggle.asp