2011-10-06 4 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

something like this을 수행중인 textnodes으로 게임을 할 수 있습니다.


업데이트

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

값 3을 하드 코딩하는 대신'(b.nodeType === Node.TEXT_NODE? b : null);을 사용하여 이해하기 쉽습니다. 이 도움을 보았다 : 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에는 : first-line 또는 : last-line selector가 없다고 생각합니다. – 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

을 또는 당신이 할 수있는을 세 줄을 세 개의 다른 길이에 넣으십시오. 같은 뭔가 :

<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();