2010-08-22 21 views
0

我遇到jquery問題,當查詢字符串中有'$'字符時找不到元素 - 是否存在已知問題?不幸的是搜索引擎很難搜索線程中的符號。

我有一個HTML像這樣:

<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">... 

和我的JScript的雲一樣的東西:

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

雖然在Firebug分析,我看到了 '項目' 是空集。例如,如果我查詢$('。MenuItem'),它會正確返回一個結果集,其中包含25個匹配的項目;看起來像$(s)在s中包含$ chars時不起作用?

它的解決方案是什麼?對不起,如果它是一個愚蠢的問題或衆所周知的問題 - 正如我所說我試圖谷歌周圍,但沒有成功。

注意:這不是一個問題與JavaScript本身,或重複的id,或jquery未加載,或類似的東西。函數確實被調用onclick,如果我用document.getElementById(ids [i])替換$('#'+ ids [i]),它確實返回了正確的元素。 fyi,傳遞給函數setSelectedTab的字符串通常包含TD元素的層次結構路徑;儘管在上面的示例TD中,ids.length是1.

謝謝, Raja。

回答

1

也許嘗試用反斜槓

<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

這工作逃脫他們 - 謝謝。 – user392005 2010-08-22 23:01:43

+0

那麼,也只是想提一下它的工作原理。我必須在onclick和tabsrowid屬性值中雙重轉義(\\\)$,但不得不按原樣保留id屬性(未轉義)。 – user392005 2010-08-23 18:32:03