2012-05-17 45 views
0

我試圖讓使用DOM在我的網頁的一些元素:$('ul li').text()選擇元素的文本,並添加逗號

而在這之後(或者期間),我想補充一個逗號。在某些情況下,我得到的文字有白色空格和其他字符。

因此,我很想得到這樣的例子["first text", "second element", "third"]

會是什麼簡單的方法來做到這一點使用JavaScript函數或jQuery的數組?

在此先感謝您的幫助。

+1

一個例子可能有助於驗證你想要做什麼。 – HBP

+0

jquery讓生活更輕鬆,但你的問題需要更好的例子更準確 – Dhiraj

+0

檢查它:http://api.jquery.com/map/ – swati

回答

1

如果我正確地理解了你的問題,你想把你的選擇器中的每個li的文本放到一個數組中。如果是的話,試試這個:

var liText = $('ul li').map(function() { 
    return $(this).text(); 
}).get(); 
console.log($.unique(liText)); 

Example fiddle

+0

作品完美!謝謝! – reycoy

+0

順便說一下,我現在如何刪除重複的值?有沒有一種方法使用該地圖選項來獲得唯一的值? – reycoy

+0

您可以使用'$ .unique(array)'去除僞裝,我已經爲您更新了我的示例。 –

1

使用jQuery的$.map()方法。它的目標是返回一個映射值數組。在回調中獲取元素的文本內容,並最終得到元素文本內容的數組。

使用Array.join()方法返回數組元素的逗號分隔字符串(在您的情況下是元素的文本)。

var els = $('li'); 

var arr = $.map(els, function(item) { 
    return $(item).text(); 
}); 

var texts = arr.join(',');​ 

DEMO

1
如果你想擁有的話的基礎上的空間存在,你可以使用 join JavaScript方法數組

。 我不熟悉另一個最喜歡的jQuery地圖方法。

var res_arr = new Array(); 
$("ul li").each(function(e) { 
    res_arr[e] = $(this).text(); 
}); 
var output = res_arr.join(","); 

所以輸出將包含逗號分隔的元素。

+0

我收到語法錯誤,試圖使用您的代碼!語法錯誤: res_arr [] = $(this).text(); – reycoy

+0

@reycoy oops ...編輯的代碼[demo](http://jsfiddle.net/8NY27/6/),現在應該可以工作。 – optimusprime619

0
var result = new Array(); 
$('ul li').each(function(){ 
    result.push($(this).text()); 
}) 
return result;//get a array,if you want a string you can use result.join(',') or  //result.join(' ') 
0

你可以做一個小小的插件,這個

$.fn.csv = function(){ 
    var csv = ''; 

    this.each(function(){ 
     csv += $(this).text() + ','; 
    }); 

    return csv; 
}; 

而且按如下方式使用它..

alert($('selector').csv()); 

here