data-attribute中的值超出双重qotes

时间:2015-08-13 05:43:53

标签: jquery html5 custom-data-attribute

我正在尝试使用data属性向表中添加其他信息。这适用于前两个属性,但不适用于data-makeModelDescription,data-firstRegistration和data-mileage。在这里我得到输出

<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>');

其他人是否也遇到过同样的问题?任何有关如何调试此观察的提示也会很棒。我使用console.log()检查是否e。 G。 value.mileage的值是正确的,它是。就在我将它用作数据属性的值时,我得到了这个奇怪的输出。

1 个答案:

答案 0 :(得分:2)

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

$.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>');

由于您使用的是简单的字符串连接,因此未引用时,新项目将被理解为新的empty attributes。见这个例子:

var val = "test foo bar";
$('#table__cars').append('<tbody data-val=' + val + '>');

这与说:

完全相同
$('#table__cars').append('<tbody data-val=test foo bar>');

HTML解析器通常希望属性具有值,因此它显示为空:

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

这就是需要引号的原因,即使quotes are not required in certain cases,我建议也一直使用它们。否则一切都可能在测试中起作用,但是稍后当某个值有空格时它会破坏。

5之前的HTML版本也需要引用属性值。