【问题标题】:JQuery issue with query having $ in string字符串中包含 $ 的查询的 JQuery 问题
【发布时间】:2010-08-22 18:45:35
【问题描述】:

我有一个 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();
    }
}

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

解决办法是什么?对不起,如果这是一个愚蠢的问题或众所周知的问题 - 正如我所说的,我试图用谷歌搜索,但没有成功。

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

谢谢, 拉贾。

【问题讨论】:

    标签: javascript jquery addclass attr


    【解决方案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">...
    

    【讨论】:

    • 好吧,也只是想提一下究竟是什么工作。我必须在 onclick 和 tabsrowid 属性值中双重转义 (\\) $,但必须保持 id 属性不变(未转义)。
    猜你喜欢
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多