2011-05-31 80 views
1

我正在向jquery UI選項卡控件添加一些自定義選項卡。使用jQuery UI選項卡防止出現異常

$("#tabs").tabs("add","#tabContent0","CLICK ME TO CHANGE PAGE",0); 
$('a[href="#tabContent0"]').attr("href","javascript:window.location='http://www.google.co.uk';"); 

是的,這是一個黑客位,但它到底是什麼,我需要和提供了一個很好的方式,讓鏈接回以前的父頁面。

jquery拋出以下異常:「jQuery UI選項卡:不匹配的片段標識符」。

這引發的行似乎試圖使標籤容器在jquery ui中可見(確切的線不會幫助,因爲從官方網站縮小和自定義生成)。

顯然我只是重定向,但jquery有額外的代碼來選擇選項卡(不存在)。在Internet Explorer中,如果用戶啓用了腳本錯誤,他們將在窗口位置更改之前發現異常,這是我無法實現的。

我不能把這個代碼試試看,因爲它是引發異常的jQuery UI中的代碼。

是否有反正我可以防止這種異常被拋出或實現相同的事情,但不同的方式而不必修改jquery ui

編輯:我現在想知道是否有一種方法來重寫由jquery放置在元素上的點擊事件掛鉤..它肯定做了一些我不能看到的東西。

編輯:我現在必須註銷,但我已經取得了一些進展,如果有人可以幫助我獲得正確的URL,使用此代碼可以防止發生異常,但會將我重定向到「http:// myurl/undefined 「

$('#tabs').bind('tabsselect', function(event, ui) { 

if(ui.index<2) //ignore this will change to get current tab count -1 (so the end tab is left as it is 
{ 
     window.location=$('#'+ui.tab).attr("href"); //attr href is undefined, how do i use ui.tab properly to get the right url 
     return false; 
} 

}); 

回答

2

它適用於我和Chrome和IE8。

我也試過這個代碼和它的工作:

$("#tabs").tabs("add","#tabContent0","CLICK ME TO CHANGE PAGE",0); 
$('a[href="#tabContent0"]').click(function() { 
    document.location='http://www.google.co.uk/'; 
}); 

而是改變href屬性的,我對click事件的新選項卡添加一個處理程序。這將使標籤被切換,然後位置改變。

+0

謝謝!這是一個更加優雅的解決方案:D +1 – Chris 2011-06-01 08:53:54

1

從jQuery UI文檔:

$('#example').tabs({ 
    select: function(event, ui) { 
     var url = $.data(ui.tab, 'load.tabs'); 
     if(url) { 
      location.href = url; 
      return false; 
     } 
     return true; 
    } 
}); 

雖然,jQuery的標籤,呃,方法,應該支持傳遞的選項卡和麪板選擇,所以你可能只會讓事情鏈接,而不必踢反對刺。