2010-02-11 81 views
1

我需要使用jQuery構建一個字符串變量來查找由span標記包圍的所有文本節點。重要的是我需要用管道字符「|」分隔每段文本。使用jQuery操作構建Javascript變量

例如採取以下HTML:

<div id="myDiv"> 
<span>this</span> <span>is</span> <span>the</span> <span>text</span> 
</div> 

使用jQuery我需要出示以下:

var my_variable = "this|is|the|text"; 

到目前爲止,我有以下的jQuery語句,但這個只是增加了管道字符在結束並且不分隔每段文本。

var my_variable = $("#myDiv").find("span").text() + '|';

任何幫助將非常感激。

注意:要我打算用字符串的結尾刪除最後一個豎線:

my_new_variable = "my_variable.slice(0, -1)"; 

回答

6

可以使用map()跨度的元素來獲取文本。 JavaScript數組有一個join()方法,將把管道放在它們之間,但首先你需要將你的jQuery對象轉換成一個Javascript數組。爲此,請使用$.makeArray()

var my_variable = $.makeArray($("#myDiv span").map(function() { 
    return $(this).text(); 
})).join("|"); 
+0

我收到以下錯誤: 類型錯誤:。表達的「結果$( 「#myDiv」)找到( 「跨度」)地圖(函數(){返回$( this).text();})。join'[undefined]不是函數。 – user270778

+0

@hayler:是的,我已經解決了。嘗試更新的版本。 – cletus

+0

非常感謝您的回覆 - 非常接近,除了我得到一個雙「|」每個文本字符串之間。 – user270778

0
var strings = []; 
$('#myDiv span').each(function(){ 
    strings.push($(this).text()); 
}); 
var my_variable = strings.join('|'); 
0
var pipeText=""; 

$('#myDiv span').each(function(){ 
    pipeText+=$(this).text() + "|"; 
}); 

pipeText = pipeText.slice(0, -1);