easyui layout 收縮的bug


  easyui layout提供collapse方法折疊指定的 panel,'region' 參數可能的值是:'north'、'south'、'east'、'west',但是在 IE6的環境下,調用這個方法的時候,奇怪的事情發生了,里面的內容不見了,變成很大一塊空白,這里有一個很戳的解決辦法:

  $('#cc').layout('collapse','west');  

  $('#cc').layout(expand','west');  

  $('#cc').layout('collapse','west');  

-----------------------------------------------------------------華麗麗的分割線-------------------------------------------------------------------------

  數日過后,經高人指點,此bug有了新解決方法:

  jquery.easyui.min.js源碼第3888行開始:

 _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) 這段代碼會晚於回調方法執行,從而導致腳本報錯,出現留白效果。

  這個問題當然是我找同事幫忙才發現的,其實要找到解決這個問題並不難,我之所以沒能解決首先是對jquery不熟悉,不知道有animate這么一個動畫效果的方法。其次是認為人家的框架應該是很健壯的,不可能改的動,說白了就是缺乏自信吧。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM