다음과 같은 div가 있습니다.
<div id="one">
<div class="first"></div>
"Hi I am text"
<div class="second"></div>
<div class="third"></div>
</div>
jquery를 사용하여 “Hi I am text”에서 “Hi I am replace”로 텍스트 만 변경하려고합니다. 쉬울 수도 있지만 할 수 없습니다.
사용 $('#one').text('')
하면 전체 #One
div가 비워집니다 .
답변
텍스트는 그 자체가 아니어야합니다. span
요소에 넣으십시오 .
다음과 같이 변경하십시오.
<div id="one">
<div class="first"></div>
<span>"Hi I am text"</span>
<div class="second"></div>
<div class="third"></div>
</div>
$('#one span').text('Hi I am replace');
답변
텍스트 노드 ( nodeType==3
)를 찾아 다음을 바꿉니다 textContent
.
$('#one').contents().filter(function() {
return this.nodeType == 3
}).each(function(){
this.textContent = this.textContent.replace('Hi I am text','Hi I am replace');
});
라이브 예 : http://jsfiddle.net/VgFwS/
답변
텍스트를 빈 문자열이 아닌 다른 것으로 설정해야합니다. 또한 .html () 함수는 div의 HTML 구조를 유지하면서이를 수행해야합니다.
$('#one').html($('#one').html().replace('text','replace'));
답변
대체 할 텍스트를 실제로 알고 있다면 다음을 사용할 수 있습니다.
$('#one').contents(':contains("Hi I am text")')[0].nodeValue = '"Hi I am replace"';
또는
$('#one').contents(':not(*)')[1].nodeValue = '"Hi I am replace"';
$('#one').contents(':not(*)')
이 경우에는 요소가 아닌 자식 노드를 선택하고 두 번째 노드는 우리가 교체하려는 노드입니다.
답변
또 다른 방법은 해당 요소를 유지하고 텍스트를 변경 한 다음 해당 요소를 다시 추가하는 것입니다.
const star_icon = $(li).find('.stars svg')
$(li).find('.stars').text(repo.stargazers_count).append(star_icon)
답변
HTML을 변경할 수없는 경우를 대비하여. 매우 원시적이지만 짧고 작동합니다. (부모 div가 비워 지므로 하위 div가 제거됩니다)
$('#one').text('Hi I am replace');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="one">
<div class="first"></div>
"Hi I am text"
<div class="second"></div>
<div class="third"></div>
</div>