2011-12-19 74 views
5

我試圖調用一個函數,當一個標籤被加載,但它似乎事件永遠不會觸發,我無法弄清楚我做錯了什麼。jquery ui標籤事件

<div id="tabs" style="padding-top:0px;margin-top:0px"> 
    <ul> 
    <li><a href="#tabs-scripting">Scripting</a></li> 
    <li><a href="#tabs-scripting-history">Scripting History</a></li> 
    <li><a href="#tabs-equipment">Equipment List</a></li> 
    <li><a href="#tabs-syslogs">Syslogs</a></li> 
    <li><a href="#tabs-visio">Visio</a></li> 
    <li><a href="#tabs-misc">Misc</a></li> 
    </ul> 

    <div id="tabs-visio"> 
    <img id="visio_topology" src="/Scripting/customer/7229_topology.png"> 
    <!-- Visio Tab div end --> 
    </div> 

JS:

$('#tabs').tabs({ 
    select: function(event, ui) { 
     window.location.hash = ui.tab.hash; 
    } 
    }); 

    $("#tabs-visio").tabs().bind("tabsload", function(event, ui) { 
    console.log('hello world'); 
    }); 

用Firebug我從來沒有看到 '世界你好'。我是jquery的新手,我知道我必須錯過一些簡單的東西,我只是無法弄清楚什麼。

回答

0

嘗試在綁定到tabsload事件處理程序後初始化tabs。試試這個

$("#tabs-visio").bind("tabsload", function(event, ui) { 
    console.log('hello world'); 
    }).tabs(); 
0

我不使用jQuery UI選項卡經歷,但我看了一下你的問題,這是我發現:

  • 標籤特定事件的#tabs元素上觸發。
  • 事件tabsload在標籤具有外部URL時觸發。在這種情況下,使用AJAX加載內容,並且當AJAX請求成功時,則會觸發tabsload事件。
  • 如果本地或緩存的URL只有tabselecttabshow事件被觸發。所以你應該使用這些事件之一。

糾正我,如果我錯了,但似乎你想加載某種大圖像,當選項卡被選中。在你的例子中,img將在頁面加載時被加載。如果你想懶洋洋地加載圖像,然後試試這個:

$('#tabs').tabs({ 
    select: function(event, ui) { 
     // if "Visio" tab is selected and the image is not in DOM ... 
     if(ui.index === 4 && $("#visio-topology").length === 0) { 
     // ... append it to the div 
     $("#tabs-visio").append($("<img>", { 
      id: 'visio-topology', 
      src: '/Scripting/customer/7229_topology.png' })); 
     }    
    } 
}); 

HERE您可以用活動實驗,看到的差異。

0

這真的是你的整個HTML?如果是這樣,那麼您在#tabs div上缺少結束標記。 HTML片段末尾的結束標記正在關閉#tabs-visio div。 無效的HTML(如果真的存在)會讓jquery煩惱。

+0

哇,我剛剛注意到這個問題已經過了一年多了。我希望你能在此期間把它整理好! – Jon 2013-01-10 14:53:03