2016-02-05 67 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>