[JQUERY] HTML 태그를 제거하지만 innerHTML을 유지
JQUERYHTML 태그를 제거하지만 innerHTML을 유지
해결법
-
1.
$('b').contents().unwrap();
이 선택은 모든 엘리먼트는 다음 .contents ()를 사용 의 텍스트 콘텐츠를 대상으로하고 .unwrap ()이 그 부모 요소를 제거하기.
최고의 성능을 위해, 항상 기본 이동 :
var b = document.getElementsByTagName('b'); while(b.length) { var parent = b[ 0 ].parentNode; while( b[ 0 ].firstChild ) { parent.insertBefore( b[ 0 ].firstChild, b[ 0 ] ); } parent.removeChild( b[ 0 ] ); }
이것은 훨씬 더 빨리 여기에서 제공하는 jQuery를 솔루션에 비해 될 것입니다.
-
2.당신은 또한이 같은 .replaceWith ()를 사용할 수 있습니다 :
당신은 또한이 같은 .replaceWith ()를 사용할 수 있습니다 :
$("b").replaceWith(function() { return $(this).contents(); });
또는 당신은 그냥 문자열 알고있는 경우 :
$("b").replaceWith(function() { return this.innerHTML; });
당신도 접근하기 때문에 요소를 많이 풀기하는 경우이 위 .unwrap의 비용보다 훨씬 빠르고 큰 차이를 만들 수 있습니다 ().
-
3.것 JQuery와는 .text () 함수 텍스트 만 내부 HTML 요소를 제거하고 반환하는 가장 간단한 방법.
것 JQuery와는 .text () 함수 텍스트 만 내부 HTML 요소를 제거하고 반환하는 가장 간단한 방법.
예:
var text = $('<p>A nice house was found in <b>Toronto</b></p>'); alert( text.html() ); //Outputs A nice house was found in <b>Toronto</b> alert( text.text() ); ////Outputs A nice house was found in Toronto
js 휘티 d 혀라도
-
4.이것은 어떤가요?
이것은 어떤가요?
$("b").insertAdjacentHTML("afterend",$("b").innerHTML); $("b").parentNode.removeChild($("b"));
첫번째 라인 복사 HTML에 직접 B 태그의 뒤에 위치에 B 태그의 내용 후 두번째 라인에만 해당 복사 콘텐츠를 떠나는 DOM에서 태그 (B)를 제거한다.
나는 일반적으로 쉽게 사용할 수 있도록하는 기능으로이 포장 :
function removeElementTags(element) { element.insertAdjacentHTML("afterend",element.innerHTML); element.parentNode.removeChild(element); }
모든 코드 만 JQuery와 사용중인 그 타겟팅 요소 (제 1 실시 예에 관한 태그 B)를 선택하는 실질적으로 순수한 자바 스크립트이다. 함수는 순수한 JS이다 : D
또한보고 :
-
5.
// For MSIE: el.removeNode(false); // Old js, w/o loops, using DocumentFragment: function replaceWithContents (el) { if (el.parentElement) { if (el.childNodes.length) { var range = document.createRange(); range.selectNodeContents(el); el.parentNode.replaceChild(range.extractContents(), el); } else { el.parentNode.removeChild(el); } } } // Modern es: const replaceWithContents = (el) => { el.replaceWith(...el.childNodes); }; // or just: el.replaceWith(...el.childNodes); // Today (2018) destructuring assignment works a little slower // Modern es, using DocumentFragment. // It may be faster than using ...rest const replaceWithContents = (el) => { if (el.parentElement) { if (el.childNodes.length) { const range = document.createRange(); range.selectNodeContents(el); el.replaceWith(range.extractContents()); } else { el.remove(); } } };
-
6.(커피) 또 다른 기본 솔루션 :
(커피) 또 다른 기본 솔루션 :
el = document.getElementsByTagName 'b' docFrag = document.createDocumentFragment() docFrag.appendChild el.firstChild while el.childNodes.length el.parentNode.replaceChild docFrag, el
더 빨리 user113716의 솔루션보다인지는 모르겠지만, 일부에 대한 쉽게 이해할 수 있습니다.
-
7.가장 간단한 대답은 마음 불고있다 :
가장 간단한 대답은 마음 불고있다 :
여기에서도 jQuery를하지 않고 자바 스크립트와 함께 할 것입니다
function unwrap(selector) { var nodelist = document.querySelectorAll(selector); Array.prototype.forEach.call(nodelist, function(item,i){ item.outerHTML = item.innerHTML; // or item.innerText if you want to remove all inner html tags }) } unwrap('b')
이 오래된 IE를 포함한 모든 주요 브라우저에서 작동합니다. 최근 브라우저에서, 우리는 심지어 노드 목록에서 foreach는 바로 전화를 걸 수 있습니다.
function unwrap(selector) { document.querySelectorAll('b').forEach( (item,i) => { item.outerHTML = item.innerText; } ) }
from https://stackoverflow.com/questions/4232961/remove-a-html-tag-but-keep-the-innerhtml by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 이벤트가 요소에 있는지 확인 [중복] (0) | 2020.10.13 |
---|---|
[JQUERY] 어떻게 자바 스크립트에서 이미지를 캐시 않는다 (0) | 2020.10.13 |
[JQUERY] 이벤트 핸들러 jQuery를 요소에 결합되는 경우 시험 [중복] (0) | 2020.10.13 |
[JQUERY] 어떻게 각도 4 jQuery를 플러그인을 사용 하는가? (0) | 2020.10.13 |
[JQUERY] $ 아약스 ()와 $ 갔지 ()와 $ .load의 차이 () (0) | 2020.10.13 |