【问题标题】:jQuery dot in ID selector? [duplicate]ID选择器中的jQuery点? [复制]
【发布时间】:2012-04-13 09:45:51
【问题描述】:

可能重复:
How to select html nodes by ID with jquery when the id contains a dot?

我有一个包含类似元素的网站:

<p id="root.SomeCoolThing">Some Cool Thing</p>

我不能像$('#root.SomeCoolThing')这样用jQuery选择段落,因为jQuery认为SomeCoolThingid="root"元素的类。

如何使用 jQuery 选择这个元素?我想避免这样的结构:

$(document.getElementById('root.SomeCoolThing'))

【问题讨论】:

标签: jquery jquery-selectors


【解决方案1】:

使用jQuery selectors API 中的转义规则如下:

$('#root\\.SomeCoolThing') 

来自docs

使用任何元字符(例如 !"#$%&amp;'()*+,./:;&lt;=&gt;?@[\]^`{|}~) 作为名称的文字部分,它必须 用两个反斜杠转义:\\。例如,一个元素 id="foo.bar",可以使用选择器$("#foo\\.bar")

【讨论】:

  • 啊,我明白了。尝试使用一个不起作用的反斜杠。谢谢!
  • 我试过 $('#root\\.SomeCoolThing'),它有效。但是当我尝试使用双引号 $("#root\\.SomeCoolThing") 时,它不起作用。你知道 jQuery 中单引号和双引号的区别吗?
  • 这对我不起作用,我的 id 中有两个或更多点。
  • @charlietfl 请注意,带反斜杠的点表示法要快得多:jsperf.com/jquery-selectors-perf-test
【解决方案2】:

您需要转义特殊字符:

$('#root\\.SomeCoolThing')

docs:

如果您希望使用任何元字符(例如 !"#$%&'()*+,./:;?@[]^`{|}~ ) 作为名称的文字部分,您必须使用两个反斜杠转义字符:\\。例如,如果您有一个带有 id="foo.bar", 的元素,您可以使用选择器 $("#foo\\.bar")。

【讨论】:

    【解决方案3】:

    在每个特殊字符前使用两个反斜杠

      $('#root\\.SomeCoolThing')
    

    【讨论】:

      【解决方案4】:

      使用 attr 工作:

      $('p[id="root.SomeCoolThing"]')
      

      【讨论】:

      • 'One-liners' 有时不够用。用一句简单的话解释你的想法……
      • 这也是 jQuery 部分不必要的大量额外处理,您真正需要做的就是转义“.”。字符...
      • @Ian。当您事先不知道 id 时,它很有用。它可能是您从 json 对象中获取的变量。
      【解决方案5】:

      这里是从臀部拍摄,但如果您无法更改元素的 ID,请尝试使用此选择器:

      $("p[id=root.SomeCoolThing]")
      

      【讨论】:

      • 不是没有"":错误:语法错误,无法识别的表达式:p[id=details_it.airgap.vault]`
      【解决方案6】:
      猜你喜欢
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 2015-11-20
      • 2010-10-11
      相关资源
      最近更新 更多