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)
:1是idHTML5中完全有效的属性:
但是,它可能需要一些转义.
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包含\ 或引用,则必须在字符串文字中对其进行转义.