2011-10-06 30 views
2

從標記字符串一些文字,我有以下的標記:抓鬥使用jQuery

<span> 
Some text blalablalalbal<br/><br/> 
"You are Awesome" <br/><br/> 
----What can I do for you?<br/><br/> 
</span> 

現在我想隱藏第一線和修改的最後一行。

如何使用jQuery抓取這些文本?

注:

1:有類似的代碼塊的但具有不同的文本多個實例。所以我不能硬編碼。我想知道如果我能用某種方式使用
標籤進行拆分嗎? 2:如果可以在C#中的服務器端代碼中完成,那也很好。

回答

3

你可以用textnodessomething like this


更新

var $nodes = $('span').contents().map(function(a,b){ 
    return (b.nodeType===3?b:null); 
}); 

// hide first line 
$($nodes.get(0)).wrap('<span style="display:none;" />'); 
$nodes.get(2).data = "foo"; 

Working example of what I mean

+0

感謝。它有效,但我已經想出了類似的東西。 – gbs

+0

我用'(b.nodeType === Node.TEXT_NODE?b:null);'而不是硬編碼值3,更容易理解。看看這個幫助:https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType – nommer

0

CSS有:第一行和最後一行修飾符。

嘗試:

span:first-line { 
    display: none; 
} 

使用jQuery與選擇修改最後一行:

var content = $('span:last-line').html(); 
content += " - Modified"; 
$('span:last-line').html(content); 
+0

我沒有測試過上面的代碼,但它應該在理論上工作! :D –

+0

我不認爲jQuery有:第一行或:最後一行選擇器。 – David

0

您可以分割的換行和修改數組:

var elm = $('span'), 
    lines = elm.html().split('<br>'); 

lines.shift(); // removes the first 
lines[lines.length-3] += '-modified'; // modify the last 

elm.html(lines.join('<br>')); 
0

或者你可以把三條線與三個不同的跨度用ID。 喜歡的東西:

<span> 
<span id="sentence1">Some text blalablalalbal</span><br/><br/> 
<span id="sentence2">"You are Awesome" </span><br/><br/> 
<span id="sentence3">----What can I do for you?</span><br/><br/> 
</span> 

而且,即使躲在使用jQuery的第一句話:

$("span#sentence1").hide();