2016-02-08 44 views
1

所以,我在js中使用push來推送對象。jQuery推送一個逗號

我追加此對象插入到HTML:

var top = []; 

for (var i = 0; i < 1; i++) {             
    var file= something[i]; 
    top.push(file);  
}; 

jQuery('.place').append(top); 

我注意到,有在file變量之間用逗號:

<div class="place"> 
    <div class="name">something</div> 
    , 
    <div class="name">else</div> 
</div> 

我猜測這逗號有作爲結果的push事件。

我該如何擺脫它?

有什麼建議嗎?

感謝

+0

無關與推動。 'var x = [1,2]; console.log(x.toString());' – epascarello

回答

3

你傳入字符串array到jQuery的append方法。只需先加入它:

jQuery('.place').append(top.join('')); 

當一個數組(這是當您嘗試append字符串數組什麼jQuery是在這裏做)的調用toString()它投影每個數組元素爲一個字符串,並把之間的逗號他們:

[1,2,3].toString(); //"1,2,3" 
[{a:"b"},2,3].toString(); //"[object Object],2,3" 
+0

我也想過,但你可以附加一個數組:http://api.jquery.com/append/ – Gavriel

+0

謝謝。得到它的工作。學到一些新的=) – HEYHEY

+0

@Gavriel - OP沒有傳遞一個節點數組(jQuery接受),它是一個字符串數組,這就是爲什麼逗號在那裏。 – Adam

1

首先它看起來有一個問題,使用top作爲變量名,所以我把它改爲top1。

理論: 根據http://api.jquery.com/append/您可以傳遞DOM元素或String(或其他東西,但它們與問題無關)的數組。您好像傳遞了一個字符串數組,它不是一個DOM元素數組,所以它被串化,並且數組的字符串化在元素之間有逗號。我很肯定你在他們之前也有一個「[」,而他們之後有一個「]」。

實踐:嗯,我似乎沒有重現你的問題(至少在Chrome,FF,Safari瀏覽器):

var top1 = []; 
 

 
for (var i = 0; i < 2; i++) {             
 
    var file = "<div>something[i]</div>"; 
 
    top1.push(file);  
 
} 
 

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