Javascript Jquery没有';当$(';&#div';+;变量)中的变量包含空格时,找不到要追加的div

Javascript Jquery没有';当$(';&#div';+;变量)中的变量包含空格时,找不到要追加的div,javascript,jquery,html,Javascript,Jquery,Html,我试图使用jQuery从函数的输入值附加div,但注意到除了附加到主体的主div之外,我什么都没有得到: var the_key = "AAA AA"; //put here as an example $('body').append('<div class="chart_canvas" id="div_'+ the_key +'" />'); $('#div_' + the_key).append('<div id="d3_canvas'+ the_key +'" />

我试图使用jQuery从函数的输入值附加div,但注意到除了附加到主体的主div之外,我什么都没有得到:

var the_key = "AAA AA"; //put here as an example
$('body').append('<div class="chart_canvas" id="div_'+ the_key +'" />');
$('#div_' + the_key).append('<div id="d3_canvas'+ the_key +'" />');
var_key=“AAA”//举个例子
$('body')。追加('');
$('#div'+_键);
如果按_key=“AAAAA”键,则该功能有效

我添加引号的尝试不太成功,最终出现了一个错误(无法识别的表达式),因为引号最终出现在表达式中:

$('#div_' + "'" + the_key + "'").append('<div id="d3_canvas'+ the_key +'" />');
$('#div_'+''''+'''+'加上_键+”)。追加('');
我有什么办法可以做到这一点吗?我从中读取这些“theu key”值的对象都包含空格。

ID中的空格对于jQuery来说是一个“问题”。试着逃避它:

<script>
  // document.getElementById or similar
  document.getElementById('AAA AA');
  // document.querySelector or similar
  $('#AAA\\ AA');
</script>

//document.getElementById或类似文件
document.getElementById('AAA AA');
//document.querySelector或类似工具
$('AAA\\AA');
您也可以像这样使用属性选择器:

<script>
  $("*[id='AAA AA']");
</script>

$(“*[id='AAA']”);
  • id
    值中不能有空格。这只是(除此之外,它们必须是独一无二的)

  • 另外,CSS也不能包含未经scaped的空间(因为空间是后代组合符)。但这并不重要,因为#1.:-)


  • 使用有效的ID,如果它没有HTML
    ID
    s中允许的任何字符,但没有CSS ID选择器(或者您正确地转义了这些字符),则不带引号的串联将起作用。

    空格不是HTML中值的合法字符

    即使它在某些情况下可能“起作用”,也不能保证它总是会起作用

    console.log('test',document.getElementById('test');
    console.log('te-st',document.getElementById('te-st');
    log('jquerytest',$('#test').length);
    log('jQuery te st',$('te st').length)
    
    
    测验
    
    te st
    id
    中的空格无效,为句号。就我所知,在HTML5中,所有关于ID属性中允许的字符的限制都被删除了。现在ID和其他所有ID一样是一个普通属性,正如我在回答中(引用)所说:“当在HTML元素上指定时,ID属性值在元素树中的所有ID中必须是唯一的,并且必须至少包含一个字符。该值不得包含任何空格字符。”(我的重点)。当我们有需要参考的规范时,不需要“据我所知”。:-)我只是想问一下,既然这是关于无效的身份证,用数字开始一个身份证,它有效吗?@guradio:恐怕我听不懂那个句子。OP的ID不是以数字开头的,因此ID选择器以数字开头的CSS问题是不相关的。这里的问题是空格,它在HTML
    id
    s和CSS id选择器中都是无效的。这是我自己的问题。有时我在这里看到OP,ID以数字开头,有时是特殊字符。我只是想知道该如何回应这些问题OP@guradio:啊!答案是:一个以数字开头的ID在HTML中是绝对合适的(规范有所不同,但当前的规范说它很好,浏览器一直都很适合)。但是CSS ID选择器不能以未替换的数字开头,这使得如果要使用CSS选择器(在样式表或JavaScript中)进行选择,则以数字开头的ID很麻烦。