easyui layout提供collapse方法摺疊指定的 panel,'region' 參數可能的值是:'north'、'south'、'east'、'west',可是在 IE6的環境下,調用這個方法的時候,奇怪的事情發生了,裏面的內容不見了,變成很大一塊空白,這裏有一個很戳的解決辦法:jquery
$('#cc').layout('collapse','west'); 框架
$('#cc').layout(‘expand','west'); 函數
$('#cc').layout('collapse','west'); 動畫
-----------------------------------------------------------------華麗麗的分割線-------------------------------------------------------------------------ui
很多天事後,經高人指點,此bug有了新解決方法:spa
jquery.easyui.min.js源碼第3888行開始:code
_2b0.north.panel("panel").animate({ top: -_2b0.north.panel("options").height }, function () { _2b0.north.panel("close"); _2b0.expandNorth.panel("open").panel("resize", { top: 0, left: 0, width: cc.width(), height: 28 }); _2b0.north.panel("options").onCollapse.call(_2b0.north); });
將上面的代碼移到_2b0.expandNorth這個屬性的判斷以後:對象
if (!_2b0.expandNorth) { _2b0.expandNorth = _2b1("north"); _2b0.expandNorth.panel("panel").click(function () { _2b0.north.panel("open").panel("resize", { top: -_2b0.north.panel("options").height }); _2b0.north.panel("panel").animate({ top: 0 },0); return false; }); }
第一段代碼中animate函數是jquery中用來實現動畫效果的函數,這個函數的最後一個參數是一個回調方法,在這個回調方法中用到_2b0.expandNorth這個對象,這個東西不知道爲何會是undefine,並且每次一旦是undefine的時候,回調方法報錯,而後就會出現上面提到的留白效果。因此上面提到的在ie6下會出現這種狀況實際上是錯的,應該說是在比較差的機器上if (!_2b0.expandNorth) 這段代碼會晚於回調方法執行,從而致使腳本報錯,出現留白效果。blog
這個問題固然是我找同事幫忙才發現的,其實要找到解決這個問題並不難,我之因此沒能解決首先是對jquery不熟悉,不知道有animate這麼一個動畫效果的方法。其次是認爲人家的框架應該是很健壯的,不可能改的動,說白了就是缺少自信吧。源碼
又是一箇中秋,桂花香氣四溢