2010-08-22 16 views
0

J'ai un problème avec jquery où les éléments ne sont pas trouvés lorsque la chaîne de requête a le caractère '$' char - y a-t-il un problème connu? Malheureusement, les moteurs de recherche rendent si difficile de trouver des symboles dans les discussions.

J'ai un html comme celui-ci:

<TD id="ctl00$m$g_cd3cd7fd_df51_4f95_9057_d98f0c1e1d60$ctl00$ctl00_5" 
    class="MenuItem" 
    onclick="setSelectedTab('ctl00$m$g_cd3cd7fd_df51_4f95_9057_d98f0c1e1d60$ctl00$ctl00_5');" 
    tabsrowid="ctl00$m$g_cd3cd7fd_df51_4f95_9057_d98f0c1e1d60$ctl00$ctl00_" 
    nohide="false">... 

et mon JScript va quelque chose comme:

function setSelectedTab(selection) { 
    var ids = selection.split('/'); 
    for (var i = 0; i<ids.length; i++) { 
     var item = $("#" + ids[i]); 
     item.addClass("selected"); 
     $("#" + item.attr("tabsrowid")).show(); 
    } 
} 

En analysant dans Firebug, je vois que 'point' est un ensemble vide. Si je interroge $ ('. MenuItem') par exemple, il renvoie correctement un ensemble de résultats avec 25 éléments correspondants dans la page; il semble que $ (s) ne fonctionne pas quand s contient $ chars?

Quelle est la solution? Désolé si c'est une question stupide ou un problème bien connu - comme je l'ai dit, j'ai essayé de google autour, mais sans succès.

Remarque: Ce n'est pas un problème avec javascript, ou des doublons, ou jquery non chargé, ou quelque chose comme ça. La fonction est appelée onclick, et si je remplace $ ('#' + ids [i]) par document.getElementById (ids [i]), elle renvoie l'élément correct. fyi, la chaîne transmise à la fonction setSelectedTab contient généralement un chemin hiérarchique vers l'élément TD; bien que dans l'exemple TD ci-dessus, l'ids.length est 1.

Merci, Raja.

Répondre

1

Peut-être essayer de leur échapper avec antislashs

<TD id="ctl00\$m\$g_cd3cd7fd_df51_4f95_9057_d98f0c1e1d60\$ctl00\$ctl00_5" 
    class="MenuItem" 
    onclick="setSelectedTab('ctl00\$m\$g_cd3cd7fd_df51_4f95_9057_d98f0c1e1d60\$ctl00\$ctl00_5');" 
    tabsrowid="ctl00\$m\$g_cd3cd7fd_df51_4f95_9057_d98f0c1e1d60\$ctl00\$ctl00_" 
    nohide="false">... 
+0

qui a travaillé - merci. – user392005

+0

Eh bien, je voulais juste aussi mentionner ce qui a fonctionné exactement. J'ai dû double-échapper (\\\) $ dans les valeurs d'attributs onclick et tabsrowid, mais j'ai dû laisser l'attribut id tel quel (non échappé). – user392005