2016-02-05 66 views
1

我试图按如下方式动态地将类追加到<a>元素。追加为类属性时,Javascript字符串按空格分割

$(document).ready(function() { 
 
    var class = "abc def ghi"; 
 
    var url = "something"; 
 
    var innerText = "some random text"; 
 

 
    var innerLink = "<a href=" + url + "><i data-name=" + class + " class=" + class + "></i><span>" + innerText + "</span></a>"; 
 

 
    $("#test").append(innerLink); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="test"> 
 

 
</div>

串类可以有空格之间。当追加发生时,生成的字符串看起来像<a href="something"><i data-name="abc" def ghi class="abc"></i><span>some random text</span></a>

(检查结果中的元素以查看它)。

,但我很期待是<a href="something"><i data-name="abc def ghi" class="abc def ghi"></i><span>some random text</span></a>

什么是错的代码?

+2

不相关的问题,但你不应该使用'class'作为变量名,因为它是一个保留关键字。 –

+0

是的,我试图创建一个快速的工作示例。 –

回答

8

你需要有另一种包装引号,如果值是分隔空间

class='" + class + "'></i><span>" + 
// ^   ^------check this 

var innerLink = "<a href='" + url 
       + "'><i data-name='" + class + "' class='" + class + "'></i><span>" + 
innerText + "</span></a>"; //-----^-------------^-------^-------------^ 
+0

不会将加号添加到字符串并最终在内链中? 似乎需要将额外的引号添加到类字符串本身。 var class =“'abc def ghi'”; –

1

你缺少类围绕内部引号和name属性。

$(document).ready(function() { 
 
    var class = "abc def ghi"; 
 
    var url = "something"; 
 
    var innerText = "some random text"; 
 

 
    var innerLink = "<a href=" + url + "><i data-name='" + class + "' class='" + class + "'></i><span>" + innerText + "</span></a>"; 
 

 
    $("#test").append(innerLink); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="test"> 
 

 
</div>