无法选择id =":1"的div

mic*_*den 0 html css jquery css-selectors jquery-selectors

一种菜鸟的菜鸟,但我有一个div有这个标签:

<div class="" id=":1" role="treeitem" aria-selected="false" aria-expanded="false" aria-level="1" aria-labelledby=":1.label" aria-setsize="10" aria-posinset="1">
Run Code Online (Sandbox Code Playgroud)

我已经测试过我的jQuery正在运行(目前使用的是2.1.3版本).我已经测试了推荐的选择器,这些选择器来自众多其他SO帖子中关于选择器中的冒号,然后是其他一些.我已经分别尝试了下面的每个jQuery调用,并且没有一个实际上隐藏了我想要的元素.

$(function() {
  $("#\\:1").hide();
  $("#\:1").hide();
  $(":1").hide();
  $("\3A1").hide();
  $("\3a1").hide();
  $("\3A 1").hide();
  $("\3a 1").hide();
  $('[aria-labelledby="\\:1.label"]').hide();
  $('[aria-labelledby="\\:1.label"] *').hide();

  $(document.getElementById(":1")).hide();
  $(document.getElementById("\:1")).hide();
});
Run Code Online (Sandbox Code Playgroud)

没有任何反应或我收到上述调用的语法错误.

Chrome表示顺便说一句,CSS路径是'#\ 3a 1'.

编辑 这适用:

$(function() {
  setTimeout(function() {
    $("#\\:1").hide();
  }, 1000);
});
Run Code Online (Sandbox Code Playgroud)

我想问题是div实际上没有加载或什么的.这仍然是一个问题,因为上述解决方案存在缺陷,原因很明显.我会向谷歌集团询问这个API(它是块状的),也许有一个回调,当它加载或什么的时候.

编辑

总noob错误 - 我正在寻找的内容实际上插入了init函数中.这就是为什么在我通常称之为jQuery的时候它并不存在; 我需要把它放在这里:

init = function() {

  Blockly.inject(document.getElementById('blocklyDiv'),
      {toolbox: document.getElementById('toolbox')});
  Blockly.Xml.domToWorkspace(Blockly.mainWorkspace,
      document.getElementById('startBlocks'));
  $("#\\:1").hide();
}
Run Code Online (Sandbox Code Playgroud)

Ori*_*iol 6

:1idHTML5中完全有效的属性:

id属性指定其元素的唯一标识符 (ID).

该值必须在元素的主子树中的所有ID中 唯一,并且必须至少包含一个字符.该值不得包含任何空格字符.

但是,它可能需要一些转义.

CSS - CSS ID选择器

在CSS中,要通过ID获取元素,请使用ID选择器:

文档语言的ID属性允许作者将标识符分配给文档树中的一个元素实例.CSS ID选择器根据其标识符匹配元素实例.CSS ID选择器包含紧跟ID值的"#",ID值必须是标识符.

但是,:1它不是有效的标识符:

在CSS中,标识符(包括选择器中的元素名称,类和ID )只能包含字符[a-zA-Z0-9]和ISO 10646字符U + 00A0和更高,加上连字符( - )和下划线( _); 它们不能以数字,两个连字符或连字符后跟数字开头.标识符还可以包含转义字符和任何ISO 10646字符作为数字代码(请参阅下一项).例如,标识符"B&W?" 可以写成"B \&W \?" 或"B\26 W\3F".

因此,您不能使用选择器#:1,但您可以将其转义为#\:1.

#\:1 {
    /* CSS styles */
}
Run Code Online (Sandbox Code Playgroud)

JavaScript - CSS ID选择器

在JavaScript中,您可以使用document.querySelector获取与CSS选择器匹配的(第一个)元素.这同样适用于jQuery.

您可以使用CSS.escape[warning - experimental technology]来转义字符串,使其成为有效的CSS标识符:

document.querySelector("#" + CSS.escape(":1"));
Run Code Online (Sandbox Code Playgroud)

或者,您可以#\:1直接使用.但请注意,在JavaScript字符串文字中,字符会\转义字符,因此"#\:1"变为"#:1".因此,你必须逃避\另一个\:

document.querySelector("#\\:1");
Run Code Online (Sandbox Code Playgroud)

请注意,即使您使用CSS.escape,如果包含ID \或引号,您也必须在字符串文字中对它们进行转义.

JavaScript - ID

但JavaScript也有document.getElementById比CSS选择器更快更简单的方法.

它直接通过ID获取元素,而不是CSS转义版本:

document.getElementById(":1");
Run Code Online (Sandbox Code Playgroud)

请注意,如果ID包含\ 或引用,则必须在字符串文字中对其进行转义.