2013-04-30 100 views
0

我想當前所選選項卡的高度,並通過使用於PostMessage(中值)之後DOM,而不是jQuery的對象的父的iframe:jQuery的tabsshow:ui.panel是第一次運行

// ... 
    jQuery("#my-tabs").tabs({ 
     selected: ran, 
     show: function(event, ui) { 
      try 
      { 
       console.log(ui.panel); 

       var height = ui.panel.height(); 

       if (window.postMessage && parentUrl != undefined) 
        parent.postMessage("height:" + height, parentUrl); 
      } 
      catch (c) 
      { 
       console.log(c.message); 
      } 
     } 

    }); 

作品罰款時,頁面加載和隨機選擇的選項卡顯示。

但選擇另一標籤時,ui.panel不是jQuery對象了,所以訪問高度()崩潰:使用jQuery 1.4.3 Object #<HTMLDivElement> has no method 'height'

我'與UI 1.8.6 - 但可以」對這種奇怪的行爲找不到任何東西。 (也試過jQuery('#example')。bind('tabsshow'...同樣的事情)

回答

0

我已經修復它與檢查height()方法,否則解析ui.panel到一個jQuery對象:

   if (typeof(ui.panel.height) == "function") { 
        var height = ui.panel.height(); 
       } 
       else { 
        var panel = jQuery(ui.panel); 
        var height = panel.height(); 
       }