2015-07-11 39 views
0

我有一些HTML是形式與節點僅圍繞文本

<span class="prefix">something</span> (Optional) 
Text 
<span class="badge">Something else</span> (optional, can be multiple) 
<span class="postfix">Another thing</span> 

我想換行文本,而不是span S,在另一個跨度,這樣我可以提取和使用替換jQuery的必要。我無法編輯生成此HTML的後端代碼。鑑於我不能預先知道第一個跨度是否在那裏,或者最後會有多少跨度,是否有任何方法可以將純文本包裝起來以便可以對其進行操作?

我希望能得到一個輸出看起來是這樣的:

<span class="prefix">something</span> 
<span class="txt">Text</span> 
<span class="badge">something else</span>... 
<span class="postfix">another thing</span> 
+0

_「我希望能得到一個輸出看起來是這樣的:」 _是要求現有'有附加'span'元素span'元素中的文本換行?或者,在'.txt'' span'中包含'span'元素的現有文本? – guest271314

+0

@ guest271314用新跨度包裝純文本(不包含在任何其他節點中)。 – JackW

回答

1
  1. filter()容器元素的contents()於那些純文本節點
  2. wrap()他們在一個跨度

$('#container').contents().filter(function() { 
 
    return $(this)[0].nodeValue && $(this)[0].nodeValue.trim(); 
 
}).wrap('<span class="txt"/>');
.txt{ 
 
    color:green; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div id="container"> 
 
    <span class="prefix">something</span> 
 
    Text 
 
    <span class="badge">Something else</span> 
 
    <span class="postfix">Another thing</span> 
 
</div>

-2

是的,給你的跨度的ID,如id =「textX」。然後,您可以使用js或jquery $(「#textX」)對其進行操作。

+3

哪個跨度?問題是關於將文本添加到文本中 - 在完成之後,我知道如何使用它。 – JackW

+0

您可以使用例如$(「#textX」)。innerHTML =「 textX 」。或者你也可以從代碼中添加更復雜的孩子。 – Appsincaps

+1

考慮到HTML中的問題,這沒有任何意義。 – Quentin