easyui layout 收縮的bug

  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這麼一個動畫效果的方法。其次是認爲人家的框架應該是很健壯的,不可能改的動,說白了就是缺少自信吧。源碼

  又是一箇中秋,桂花香氣四溢

相關文章
相關標籤/搜索