【问题标题】:Curly braces in HTML name attributeHTML 名称属性中的花括号
【发布时间】:2013-04-24 21:23:40
【问题描述】:

我正在尝试根据名称检索 DOM 元素。不幸的是,他们的名字里面有花括号{}。

jQuery (1.6.4) 能够毫无问题地检索它们。但此时我试图用getElementsByName() 替换这些调用,但gEBN 不匹配查询字符串中包含大括号的任何内容。我曾尝试过一次又两次将反斜杠转义但无济于事。

有没有办法在不改变使用大括号的约定的情况下做到这一点?

It also looks like 它们不在名称 attr 中允许的字符集中。

更新:似乎适用于 Chrome,但不适用于 Windows 的 Safari。但真正奇怪的是,即使是 Windows 版 Safari 也能很好地处理这些问题。

【问题讨论】:

  • 不确定你看到这个小提琴jsfiddle.net/x7Xe5它的工作原理是什么问题
  • 该死的。看起来这意味着如果它不是小提琴可生产的,则需要进行更多测试
  • “看起来它们也不在名称 attr 允许的字符集中。” 那就不要使用无效的名称... 解决了! :)
  • 我同意@gdoron。有规则是有原因的;)

标签: javascript jquery html jquery-selectors getelementsbyname


【解决方案1】:

如果您阅读selectors 上的 jQuery 文档页面,您会看到:

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

【讨论】:

  • 好吧,那么我想问题的演示是为了:P
  • 问题是关于本机 JS 解决方案,它明确避免采用(已经工作的)jQuery 路线。但是,是的。我......现在实际上无法重现它,除了一个非常具体的案例,一个页面位于 3 层框架内。
【解决方案2】:

当您做的事情明显超出标准允许的范围时,您应该期待“奇怪”的结果。如果您选择取消预订,那您就只能靠自己了。有些浏览器可以工作,有些则不行。当新版本出来时,曾经可以工作的那些将在没有警告的情况下中断。

所以这取决于你想要做什么。如果您只是为自己或一个小团队构建一些东西,这可能没问题。如果您要为普通观众构建内容,最好遵守标准,不要使用不允许的字符。

【讨论】:

    猜你喜欢
    • 2020-01-30
    • 1970-01-01
    • 2013-05-27
    • 2015-09-06
    • 2015-08-13
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多