【问题标题】:How to select elements by attribute's value when values contains dollar sign?当值包含美元符号时如何按属性值选择元素?
【发布时间】:2012-03-10 21:47:24
【问题描述】:

我有以下 HTML 元素:

<input type="checkbox" name="ctl00$ContentPH$ucFuncionEdit1$ckEsMenu" />

如何使用jQuery选择所有同名元素,以下失败:

jQuery('[name=ctl00$ContentPH$ucFuncionEdit1$ckEsMenu]');

上一行代码引发以下错误:

错误:语法错误,无法识别的表达式: [name=ctl00$$ContentPH$$ucFuncionEdit1$$ckEsMenu]

【问题讨论】:

    标签: jquery asp.net jquery-selectors


    【解决方案1】:

    你引用值:

    jQuery ('[name="ctl00$ContentPH$ucFuncionEdit1$ckEsMenu"]');
    

    在处理属性选择器时,最好总是引用该值(尽管如果该值是一个包含字母 AZ [不区分大小写] 和数字 0-9 [但不是以数字开头],您可以不用)。

    【讨论】:

    • 对于简单的问题,简单的答案:)
    • @Jack - 我不是被动攻击或恶作剧,我使用Socratic method 来激发批判性思维。很抱歉那没有用。我强烈建议不要假设最坏的情况并且对人进行攻击。答案是jQuery('[id="ctl00$ContentPH$ucFuncionEdit1$ckEsMenu"]')idname 都是属性,因此您可以同时使用属性选择器。美好的一天。
    【解决方案2】:

    您可以使用两个反斜杠 (\\) 转义 $ 符号:

    jQuery('[name=ctl00\\$ContentPH\\$ucFuncionEdit1\\$ckEsMenu]');

    【讨论】:

    • \\$ 未转义为 \$,因为 \ 转义了它后面的字符
    【解决方案3】:

    您正在谈论 clientid,因此您可以通过 2 种方式进行操作: 1.当你的js代码在你的html所在的同一页面时:

    jQuery('#<%=ckEsMenu.ClientID%>').click();
    

    2。当您的 js 代码在单独的文件中时:

    jQuery("input[id$=ckEsMenu]").click();
    

    【讨论】:

    • 谢谢,但我不在同一页面中使用 JS,这是一种不好的做法,而是通过&lt;asp:content /&gt; 在我的母版页底部使用它。并且选择器jQuery("input[id$=ckEsMenu]") 不是防弹的,如果您有两个以“ckEsMenu”结尾的 ID,则会导致问题。
    • 您使用两个具有相同 ID 的元素?你为什么要?这不是最佳做法。
    • 我指的是两个“ckEsMenu”结尾的ID,而不是两个相同的 id。
    • ID 的结尾是什么并不重要。你应该写 [id$=yourFullID]。
    猜你喜欢
    • 2012-12-24
    • 2016-03-30
    • 2018-02-23
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 2011-04-20
    • 2011-10-10
    • 2014-12-18
    相关资源
    最近更新 更多