2010-08-30 15 views
1

Je travaille avec les onglets jQuery et j'ai du code qui se déclenche lorsque je change d'onglet.toString() ne fonctionne pas

$('#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); 
    } 
}); 

J'ai commenté le code incriminé, mais lorsque je tente de déterminer la position du caractère #, je reçois une erreur:

objet http://www.omnicom-innovations.com/play/tabsdemo1.html#fragment-2 n'a pas de méthode « IndexOf »

J'étais sous l'imporession qu'en utilisant la méthode toString(), il convertirait l'objet en chaîne. Ceci est basé hors de ma compréhension d'un poste similaire:

jQuery and split not working together?

Si quelqu'un peut signaler ce qui ne va pas, je l'apprécie grandement.

+0

Je ne suis pas sûr, mais qu'est-ce que clickedTab a comme valeur? –

+0

Il devrait avoir fragment-1, fragment-2, ou fragment-3 ... – coson

Répondre

2

indexOf commence par une minuscule I.

+0

merci, je ne peux pas croire que glissé par – coson

0

Pour autant que je compris que vous essayez simplement d'obtenir la valeur après #. Pour effectuer des opérations de chaîne en JavaScript, vous devriez de préférence utiliser des expressions régulières, car JavaScript les interprète très rapidement.

Pour cet exemple, vous pouvez effectuer les opérations suivantes:

$('#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]); 
    } 
}); 

J'espère que cette aide.