2010-08-22 79 views
2

我正在玩jQuery選項卡,並有一個原型和運行。jQuery和拆分不能一起工作?

http://www.omnicom-innovations.com/play/tabsdemo.html

這裏是我的代碼:

$(document).ready(function() { 
    $("#tabs").tabs(); 

    // Select the second tab 
    // $("#tabs").tabs({ selected: 1 }); 

    // http://viralpatel.net/blogs/2009/04/jquery-tabs-create-html-tabs-using-jquery-ui.html 
    $('#tabs').bind('tabsselect', function(event, ui) { 

    // Objects available in the function context: 
    // alert(ui.tab);  // anchor element of the selected (clicked) tab 
    var tabPageName = ui.tab; 
    alert('Tab Name: ' + tabPageName); 

    // var results = tabPageName.substring(tabPageName.IndexOf("#") + 1); 
    // alert('Page Name: ' + results); 

    var arrData = tabPageName.split("#"); 
    alert(arrData[1]); 

    // alert(ui.panel); // element, that contains the selected/clicked tab contents 
    alert(ui.index); // zero-based index of the selected (clicked) tab 

    }); 
}); 

我試圖提取標籤的名稱:(#片段1,等...),在錨標記。我試圖使用拆分方法(和IndexOf方法作爲替代方法)。

<div id="tabs"> 
    <ul> 
    <li><a href="#fragment-1"><span>One</span></a></li> 
    <li><a href="#fragment-2"><span>Two</span></a></li> 
    <li><a href="#fragment-3"><span>Three</span></a></li> 
    </ul> 
    <div id="fragment-1"> 
    <p>First tab is active by default:</p> 
    <pre><code>$('#example').tabs();</code></pre> 
    </div> 
    <div id="fragment-2"> 
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. 
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. 
    </div> 
    <div id="fragment-3"> 
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. 
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. 
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. 
    </div> 
</div> 

正如你所看到的,我不得不註釋掉split()方法,因爲我收到以下錯誤:

遺漏的類型錯誤:對象http://www.omnicom-innovations.com/play/tabsdemo.html#fragment-3有沒有方法「分裂」

但我知道split方法在JavaScript中工作。有沒有人看到我可能會失蹤?

回答

5

您需要的頁面名稱轉換爲字符串明確:使用alert

// DON'T USE THIS - this is a quick & dirty solution, see below for real solution 
// choose one - the one you really need 
var arrData = tabPageName.toString().split("#") 
var results = tabPageName.toString().substring(tabPageName.IndexOf("#") + 1); 

轉換是自動發生的,但不是當你嘗試split頁面名稱。寫這部分的最好的辦法是:

var tabPageName = ui.tab.toString(); 
// choose one - the one you really need 
var arrData = tabPageName.split("#") 
var results = tabPageName.substring(tabPageName.IndexOf("#") + 1); 

這是因爲你存儲在您的tabPageName變量究竟是不是真正的網頁名稱 - 它的標籤本身,它返回它的名字時alert版。

+0

你在說什麼是有道理的,我從來沒有想過JavaScript是一種強類型語言。我現在明白了錯誤信息。對象類型沒有拆分方法。 – coson 2010-08-22 19:24:15