带有$ in string的查询的JQuery问题

时间:2010-08-22 18:45:36

标签: javascript jquery addclass attr

我遇到了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();
    }
}

在萤火虫分析中,我看到'item'是一个空集。例如,如果我查询$('。MenuItem'),它会正确返回页面中包含25个匹配项的结果集;当s中包含$ chars时,看起来$(s)不起作用?

它有什么解决方案?很抱歉,如果这是一个愚蠢的问题或众所周知的问题 - 正如我所说,我试图谷歌,但没有成功。

注意:这不是javascript本身,或重复的id,或jquery未加载或类似的问题。函数确实被调用onclick,如果我用document.getElementById(ids [i])替换$('#'+ ids [i]),它确实会返回正确的元素。 fyi,传递给函数setSelectedTab的字符串通常包含到TD元素的分层路径;虽然在上面的示例TD中,ids.length是1。

谢谢, 拉加。

1 个答案:

答案 0 :(得分: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">...