【问题标题】:How I can I use an ID selector that contains a '#' in jQuery?如何在 jQuery 中使用包含“#”的 ID 选择器?
【发布时间】:2012-03-13 08:29:40
【问题描述】:
<div id="content">
<textarea id="#example-1">
</textarea>
<textarea id="#example-2">
</textarea>
</div>

和jQuery

var xyz = $("content##example-1").val();

此代码对我不起作用。它崩溃 - 显示未定义。当我从 textarea 的 div 中删除“#”并从 JS 代码中删除一个“#”时,它可以工作。它需要与带有“#”的id一起使用。 我可以在引号后将变量放入 $() 吗?例如:

$("content#"variable)

【问题讨论】:

  • # 字符对于 HTML 4 中的 HTML 名称或 id 属性值无效。它在 HTML5 中是允许的,并且在当前浏览器中将其用作 ID 值不是问题。但是,它会欺骗选择器引擎,这些引擎希望它是一个指示以下字符是元素 ID 的标记。选择器content#example 将尝试匹配具有标签名称content 和id 为example 的元素。 HTML 中没有这样的元素。

标签: javascript jquery


【解决方案1】:

Escape the special character in the ID,并删除 content 部分。因为element IDs must be unique,ID 选择器将最多 匹配一个元素。因此,超出此范围的任何内容都被过度指定了。

var xyz = $("#\\#example-1").val();

最好不要在 ID 中使用特殊字符:

<div id="content">
    <textarea id="example-1">
    </textarea>
    <textarea id="example-2">
    </textarea>
</div>
var xyz = $('#example-1').val();

$("content#"variable) 怎么样?可能吗?有没有处理的可能?

这不是有效的 JavaScript;您需要使用字符串连接。此外,选择器'content' 匹配标签名称为content 的元素,这不是您想要的。相信我:完全摆脱 content 部分。

然后使用我链接的 jQuery FAQ 中描述的jq 函数。

var xyz = $(jq(variable)).val();

【讨论】:

  • 好的,非常感谢 :) 但是 $("content#"variable) 怎么样?可能吗?有没有处理的可能?
  • 你确定它可以跨浏览器工作吗?我很确定 # 在 HTML5 之前不是有效的 ID 字符。
  • 我知道,但现在我正在使用 Jquery ui 选项卡,现在我没有时间从 jquery.ui.tabs.js 中删除“#”。
  • @GabrielŻukowski “没有时间从...中删除'#'” 世界 你在说什么?
  • 除非您进行了其他更改,否则您绝对不需要编辑该文件,我向您保证。只需从 您的 HTML 中的 ID 中删除 #s 并相应地调整 您的 代码中的选择器。
猜你喜欢
  • 2011-01-05
  • 1970-01-01
  • 2010-10-10
  • 2012-04-17
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 2013-12-02
  • 2014-02-28
相关资源
最近更新 更多