2010-08-30 63 views
1

我正在使用jQuery選項卡,並且我有一些代碼會在更改選項卡時觸發。toString()不工作

$('#container-1').tabs({ onClick: function(clickedTab, divElement, hiddenTab) { 

    var selectedTab = clickedTab.toString(); 
// var pos = selectedTab.IndexOf("#") + 1; 
var results = selectedTab.substring(5); 

// selectedTab.IndexOf("#") + 1 
alert(results); 
    } 
}); 

我註釋掉有問題的代碼,但是當我嘗試確定#字符的位置,我得到一個錯誤:

對象http://www.omnicom-innovations.com/play/tabsdemo1.html#fragment-2沒有法「的IndexOf」

我深信,通過使用toString()方法,它會將對象轉換爲字符串。這是基於斷我的一個類似的職位的理解:

jQuery and split not working together?

如果任何人都可以指出什麼是錯的,我會非常感激。

+0

林不太確定,但clickedTab有什麼價值? – 2010-08-30 21:32:39

+0

它應該有片段1,片段2或片段3 ... – coson 2010-08-30 22:54:38

回答

2

indexOf以小寫字母I開頭

+0

謝謝,我不敢相信,滑倒 – coson 2010-08-31 21:15:17

0

據我瞭解,您只是試圖在#後面獲取值。要在JavaScript中執行字符串操作,最好使用正則表達式,因爲JavaScript實際上是快速解釋它們的。

在這個例子中,你可以做到以下幾點:

$('#container-1').tabs({ onClick: function(clickedTab, divElement, hiddenTab) { 
     var selectedTab = clickedTab.toString(); 
     //Matches all characters after a # 
     var results = /#.+/.exec(selectedTab); 
     //var results will contain all matches of the used Expression as an Array, so you want to get the first result 
     alert(results[0]); 
    } 
}); 

我希望這有助於。