2010-07-05 53 views
1

我在div中選擇了一些段落:JQuery:在多個選擇之間添加空間

$('#myDiv p.p1, #myDiv p.p2').text(); 

我的問題是我想在每個選擇之間添加空格,以便輸出爲:「paragraph1(space)paragraph2」而不是「paragraph1paragraph2」。

任何想法?

回答

6

您可以使用.map().get()創建一個單獨段落的數組,然後使用.join(" ")將它們連接在一起並在它們之間留出一個空格。

試試這個:

var result = $('#myDiv p.p1, #myDiv p.p2').map(function() { 
    return $.text([this]); 
    // return this.innerHTML;    // Alternate means of getting text 
    // return this.firstChild.nodeValue; // Another alternate 
}).get().join(" "); 

result變量應該有你的段落分隔它們的空間。

編輯:基於@Ĵ-P,更新了全文檢索,以更有效的評論。

+1

+1,雖然我覺得'$的.text([這])'會有點快於構建一個新的JQ對象與'$(這)' ... – James 2010-07-05 13:22:46

+0

@JP:好點。我會更新。 :o) – user113716 2010-07-05 13:24:52

+0

+1,最快的解決方案。 – 2010-07-06 00:19:26

-1

這將這樣的伎倆:

$('#myDiv p.p1, #myDiv p.p2').clone().append(' ').text() 
+0

這個解決方案有什麼問題,因爲有人投下了它?它更簡單,然後patricks。 – HelpMe 2010-07-05 14:00:59

+0

Gert - 雖然我沒有投票決定(我不喜歡這樣做,而不是針對相互競爭的答案),但我想這是因爲您正在進行不必要的DOM修改,並且DOM修改速度很慢。 – user113716 2010-07-05 14:06:33

+0

@Thariama,@Gert - 剛做了一個快速測試(僅限於Firefox),在1000次迭代循環中比較了兩者。 DOM修改耗時約2,200毫秒,我的耗時約爲100毫秒。儘可能避免使用DOM。 :o) – user113716 2010-07-05 14:12:27