Jquery 数据属性中的值不在双Qote的范围内

Jquery 数据属性中的值不在双Qote的范围内,jquery,html,custom-data-attribute,Jquery,Html,Custom Data Attribute,我试图通过使用data属性向表中添加其他信息。这适用于前两个属性,但不适用于数据makeModelDescription、数据firstRegistration和数据里程。这里我得到了输出 <tbody data-set="0" data-url="http://127.0.0.1:8888/selfstudy/projects/ad/res/test/212302246.php" data-makemodeldescription="Corvette" c5=

我试图通过使用data属性向表中添加其他信息。这适用于前两个属性,但不适用于数据makeModelDescription、数据firstRegistration和数据里程。这里我得到了输出

<tbody data-set="0"
       data-url="http://127.0.0.1:8888/selfstudy/projects/ad/res/test/212302246.php"
       data-makemodeldescription="Corvette" c5="" cabrio=""
       data-firstregistration="EZ" 03="" 2001="" data-mileage="96.000" km="">

但它应该是:

<tbody data-set="0"
       data-url="http://127.0.0.1:8888/selfstudy/projects/ad/res/test/212302246.php"
       data-makemodeldescription="Corvette c5 cabrio"
       data-firstregistration="EZ 03/2001"
       data-mileage="96.000 km">

资料来源:

$.each(response, function(key, value) {
    $('#table__cars').append('<tbody 
        data-set='+key+' 
        data-url='+value.carDetailsURL+' 
        data-makeModelDescription='+value.makeModelDescription+' 
        data-firstRegistration='+value.firstRegistration+' 
        data-mileage='+value.mileage+'></tbody>');
$。每个(响应、函数(键、值){
$('table_uucars')。附加('');

还有其他人也遇到过同样的问题吗?任何关于如何调试此观察结果的提示都会很好。我使用了console.log()要检查value.miliege的值是否正确,它是否正确。当我将其用作数据属性的值时,我得到了这个奇怪的输出。

您得到的是正确的,因为您在代码中用空格写入值,而不使用引号。您应该使用

$.each(response, function(key, value) {
    $('#table__cars').append('<tbody 
        data-set="'+key+'" 
        data-url="'+value.carDetailsURL+'" 
        data-makeModelDescription="'+value.makeModelDescription+'" 
        data-firstRegistration="'+value.firstRegistration+'" 
        data-mileage="'+value.mileage+'"></tbody>');
$。每个(响应、函数(键、值){
$('table_uucars')。附加('');
由于您使用的是简单的字符串分类,因此新项目在未引用时被理解为新项目。请参见此示例:

var val = "test foo bar";
$('#table__cars').append('<tbody data-val=' + val + '>');
var val=“测试食物条”;
$('table_uucars')。附加('');
这与说:

$('#table__cars').append('<tbody data-val=test foo bar>');
$('table_uuucars')。附加(''');
HTML解析器通常希望属性具有值,因此显示为空:

<tbody data-val="test" foo="" bar="">

这就是为什么需要引号的原因,尽管如此,我还是建议始终使用引号。否则在测试中一切都可能正常,但稍后当某个值有空格时,它将中断


此外,5之前的HTML版本将要求属性值引用。

Top!按预期工作。您还知道一个页面,该页面更详细地描述了为什么带有空格的值会生成我在票证描述中注释的输出?如果不知道,也没什么大不了的。@HH添加了行为解释和一些链接