2010-08-30 65 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]); 
    } 
}); 

我希望这有助于。