선택한 요소의 외부 HTML 가져 오기


792

jQuery를 사용하여 선택한 객체의 HTML을 가져 오려고합니다. 나는 알고있다.html() 기능을 . 문제는 선택한 객체 (이 경우 테이블 행 .html(), 행 내부의 셀만 반환)를 포함하는 HTML이 필요하다는 것 입니다.

나는 주변을 탐색하고 객체를 복제하고 새로 생성 된 div 등에 추가하는 매우 '해키'한 몇 가지 방법을 찾았지만 실제로는 더러워 보입니다. 더 나은 방법이 있습니까, 아니면 새로운 버전의 jQuery (1.4.2)가 어떤 종류의 outerHtml기능을 제공합니까?


89
jQuery가 그런 일을 할 수단이 없다는 것은 터무니 없습니다. 나도 이것이 필요합니다.
Josef Sábl

9
이 스레드를 참조하여 기능 요청을 게시했으며 초기 응답은 긍정적이었습니다. bugs.jquery.com/ticket/8142
mindplay.dk

11
Ulhas Tuscano의 솔루션을 사용하여 몇 초의 시간을 절약하기 위해 작동하지 않습니다.
Dave

73
어, wth가 진행 중입니다. $('div')[0].outerHTML.
Salman von Abbas

24
@Tuscan은 $ ( "# selectorid"). prop ( "outerHTML")을 의미했습니다
guy mograbi

답변:


189

2014 년 편집 : 질문과 답변은 2010 년입니다. 당시에는 더 나은 솔루션이 널리 보급되지 않았습니다. 이제 Eric Hu 또는 Re Capcha와 같은 다른 많은 답변이 더 좋습니다.

이 사이트는 당신을위한 해결책을 가지고있는 것 같습니다 : jQuery : outerHTML | 옐로 토푸

jQuery.fn.outerHTML = function(s) {
    return s
        ? this.before(s).remove()
        : jQuery("<p>").append(this.eq(0).clone()).html();
};

4
나는 이것을 보았지만 그것을 해킹하는 것처럼 보였고 더 좋은 방법이 있어야했던 것처럼 피하려고했지만 잘 작동합니다. 감사.
Ryan

359
$ ( '[selector]') [0] .outerHTML
drogon

25
@drogon : outerHTMLFirefox 버전 11 (2012 년 3 월) 이후에만 지원됩니다.
Blaise

8
@PavingWays : Firefox의 방어 : outerHTMLW3C 표준이 아닌 Microsoft에서 개발 한 독점 속성입니다. (재미있는 사실 : innerHTMLHTML5 이후로만 표준화 됨 )
Blaise

3
pure jsel.outerHTML || document.createElement('div').appendChild( el.cloneNode( true ) ).parentNode.innerHTML
rab

675

나는 현재 (2012 년 5 월 1 일) 모든 주요 브라우저가 outerHTML 기능을 지원한다고 생각합니다. 이 스 니펫이 충분하다고 생각됩니다. 나는 개인적으로 이것을 암기하기로 결정했다.

// Gives you the DOM element without the outside wrapper you want
$('.classSelector').html()

// Gives you the outside wrapper as well only for the first element
$('.classSelector')[0].outerHTML

// Gives you the outer HTML for all the selected elements
var html = '';
$('.classSelector').each(function () {
    html += this.outerHTML;
});

//Or if you need a one liner for the previous code
$('.classSelector').get().map(function(v){return v.outerHTML}).join('');

편집 : 기본 지원 통계 에 대한element.outerHTML


14
@SalmanPK FireFox는 2011-11-11까지이 속성을 지원하지 않았습니다. bugzilla.mozilla.org/show_bug.cgi?id=92264 3.6에는 여전히 많은 사용자들이 있습니다. 이것이 실제로 네이티브 기능보다 jQuery를 사용하기로 선택한 이유의 완벽한 예라고 생각합니다.
Lucifer Sam

8
gs.statcounter.com에 따르면 @LuciferSam Firefox 3.6은 전 세계 시장 점유율이 ~ 6 %입니다. 그러나 결과 를 지난 6 개월 ('11 -May '12)과 미국으로 필터링하면 상위 12 위 (3 이하)에서 제외됩니다 %). 이 기사 에서는 2012 년 1 월 이후에 FF 3.6 사용량이 크게 줄 었기 때문에이 창을 선택했습니다 .이 데이터를 고려할 때 이전 버전과의 호환성보다 간단한 코드를위한 솔루션이 있습니다.
Eric Hu

4
더 동의하지 못했습니다. 이것은 사람들이 제안하는 다른 것들이 아니라 정답입니다. 내가 선택한 요소에는 다른 답변에 의해 손실되는 속성이 있습니다. 지옥, 이것은 심지어 IE에서도 작동합니다!
Matthew Bonig 2009 년

Firefox 11은 2012 년 3 월 13 일 (현재 수정)까지, 즉이 글을 쓰는 시점에서 1 년 전에 출시되지 않았습니다 . jQuery의 장점 중 하나는 이전 브라우저를 지원한다는 것입니다. 적어도 1 년을 지원하는 것이 합리적이며 일부 사이트는 분명히 더 많은 것을 원할 것입니다 (jQuery는 IE6을 지원함을 기억하십시오).
Matthew Flaschen

7
@EricHu statcounter는 또한 IE8이 전 세계 브라우저 점유율의 9.3 %를 차지한다고 말합니다. 그러나 내 웹 사이트 중 일부는 40 %에 가깝습니다. 그것은 상대적이며 웹 사이트마다 매우 다양하지만 Firefox 3.6은 여전히 ​​일부 웹 사이트에서 약 10 %를 차지합니다. 글로벌 시장 점유율은 아무 의미가 없습니다. 그것은 당신의 웹 사이트 청중에 관한 것입니다.
George Reith

343

함수를 생성 할 필요가 없습니다. 다음과 같이하십시오.

$('a').each(function(){
    var s = $(this).clone().wrap('<p>').parent().html();
    console.log(s);
});

(브라우저 콘솔에 기록되는 내용이 표시됩니다. 2009 년경 이후 대부분의 최신 브라우저에는이 기능이 있습니다.)

마술은 결국 이것입니다.

.clone().wrap('<p>').parent().html();

클론은 실제로 DOM을 방해하지 않음을 의미합니다. 그것을 사용하지 않고 실행하면 p모든 하이퍼 링크 앞 / 뒤에 태그가 삽입되는 것을 볼 수 있습니다 (이 예에서는 바람직하지 않음). 따라서을 사용하십시오 .clone().

작동 방식은 각 a태그를 p가져 와서 RAM에 복제하고, 태그로 랩핑하고, 태그의 상위를 가져오고 ( p태그를 의미 ) 태그의 innerHTML속성 을 얻는 것입니다.

편집 : 타이핑이 적고 동일하게 작동하므로 조언을 얻었고 div태그를 p태그로 변경 했습니다.


82
jQuery 팀이 outerHtml () 메소드를 추가하지 않는 이유가 궁금합니다.
Donny V.

1
@Derek, 그건 중요하지 않습니다. 내부에 무언가를 얻기 위해 DIV를 래퍼로 사용하고 있습니다.
Volomike

11
.clone (). wrap ( '<p>'). parent (). html (); 더 짧습니다
Uğur Gümüşhan

1
예, 적은 키 입력으로 동일한 효과를 얻습니다.
Volomike

14
일반적인 솔루션에 P 대신 DIV를 사용하는 것이 좋습니다. 모든 요소를 ​​P로 유효한 HTML로 래핑 할 수있는 것은 아닙니다.
Blazemonger

149

무엇에 대해 : prop('outerHTML')?

var outerHTML_text = $('#item-to-be-selected').prop('outerHTML');

그리고 설정 :

$('#item-to-be-selected').prop('outerHTML', outerHTML_text);

그것은 나를 위해 일했다.

추신 : 이것은 jQuery 1.6에 추가되었습니다 .


4
다른 답변에 비해 매우 깔끔하고 작은 코드입니다. Q : 다른 답변에서 언급 한 것과 동일한 outerHTML 제한이 있습니까? FF <11에서 작동합니까?
MacroMan

3
잘 작동합니다. 여기서 가장 좋은 해결책 일 수 있습니다. 브라우저가 작동하는 한 outerHTLM과 호환 가능해야합니다. prop () 메소드는 기본적으로 outerHTML 속성을 가져옵니다.
톰 톰

2
Jquery 1.6.1은 2011 년에 출시되었습니다.이 질문에 대한 답은 2010 년입니다.
David V.

1
나를 위해 "$ ( '[selector]') [0] .outerHTML;" 어떤 경우에도 작동하지 않았지만 "$ ( '# item-to-be-selected'). prop ( 'outerHTML');" 예!
Eduardo Lucio

2
$ ( '# 항목-선택 대상') .attr ( 'outerHTML'); // ** 이전 jQuery
Meetai.com

91

jQuery 확장 :

(function($) {
  $.fn.outerHTML = function() {
    return $(this).clone().wrap('<div></div>').parent().html();
  };
})(jQuery);

그리고 이것을 다음과 같이 사용하십시오 : $("#myTableRow").outerHTML();


8
이 솔루션의 작은 문제 : wrap () 전에 clone ()해야합니다. 그렇지 않으면 문서에 여분의 줄 바꿈 <div>이 남습니다.
mindplay.dk

1
감사합니다. mindplay.dk-제안 사항을 반영하도록 코드를 편집했습니다. :)
jessica

2
: 수 있다는 반대에 대한 어떤 return $('<div>').append(this.clone()).html();그냥 좀 더 투 - 포인트입니다.
저스틴 워 켄틴

2
outerHTML을 먼저 확인하고이를 지원하는 브라우저에 사용해야합니다
James Westgate

이것은 jQuery 객체와 .appendTo () 및 .append () 함수를 사용하여 AJAX 응답으로 HTML을 작성하려는 저와 같은 사람들에게 유용합니다. .outerHTML은 테스트에서 본 인스턴스에서 작동하지 않습니다. 다른 사람이 더 확인하고 싶을 수도 있지만 시간이 없습니다.
Sean Kendle

43

Arpan에 동의합니다 (Dec 13 '10 5:59).

그의 방법은 실제로 복제를 사용하지 않기 때문에 실제로 훨씬 더 나은 방법입니다. 자식 요소가있는 경우 clone 메소드는 시간이 많이 걸리며 아무도 IE가 실제로outerHTML 속성을 가지고 (예 : IE는 실제로 유용한 유용한 트릭을 가지고 있습니다).

그러나 아마도 그의 스크립트를 조금 다르게 만들 것입니다.

$.fn.outerHTML = function() {
    var $t = $(this);
    if ($t[0].outerHTML !== undefined) {
        return $t[0].outerHTML;
    } else {
        var content = $t.wrap('<div/>').parent().html();
        $t.unwrap();
        return content;
    }
};

2
이것은 나를 위해 완벽하게 작동했습니다. clone()및 의 버그로 인해 textarea비 복제 솔루션이 필요했으며 이것이 문제가되었습니다.
Shpigford

5
outerHTMLInternet Explorer 외에도 Chrome에서 지원되므로 기본적 으로 사용 가능한 경우 +1입니다 .
Andy E

9
if (! ($ t [0]의 'outerHTML')) alert ( 'god dammit, 브라우저 업데이트');
사이코 브렘

19

정말 jQuery와 동일하기를 원할 수도 있습니다. outerHTML() 와 동일 하기 위해 getter setter가 html()되고 가능한 한 유사한 동작을 수행 할 수 있습니다.

$.fn.outerHTML = function (arg) {
    var ret;

    // If no items in the collection, return
    if (!this.length)
        return typeof arg == "undefined" ? this : null;
    // Getter overload (no argument passed)
    if (!arg) {
        return this[0].outerHTML || 
            (ret = this.wrap('<div>').parent().html(), this.unwrap(), ret);
    }
    // Setter overload
    $.each(this, function (i, el) {
        var fnRet, 
            pass = el,
            inOrOut = el.outerHTML ? "outerHTML" : "innerHTML";

        if (!el.outerHTML)
            el = $(el).wrap('<div>').parent()[0];

        if (jQuery.isFunction(arg)) { 
            if ((fnRet = arg.call(pass, i, el[inOrOut])) !== false)
                el[inOrOut] = fnRet;
        }
        else
            el[inOrOut] = arg;

        if (!el.outerHTML)
            $(el).children().unwrap();
    });

    return this;
}

실무 데모 : http://jsfiddle.net/AndyE/WLKAa/

이를 통해에 인수를 전달할 outerHTML수 있습니다.

  • cancellable 함수 — function (index, oldOuterHTML) { }— 반환 값이 요소의 새 HTML이되는 경우 (여기서는 제외)false 이됩니다 (반환 ).
  • 각 요소의 HTML 대신 설정되는 문자열

자세한 내용은에 대한 jQuery 문서를 참조하십시오 html().


사람들이 그것에 대해 생각할 필요가 없도록 이것을 jQuery 코어에 추가해야합니다. 내 유일한 질문은 wrap () / unwrap ()이 clone ()보다 성능이 더 나을지 여부입니다.
IMSoP

1
IMSoP : 복제는 요소의 모든 하위 요소와 속성을 복사해야하기 때문에 일반적으로 줄 바꿈 / 언랩 해제가 더 빠릅니다. wrap ()은 단일 요소 만 만들고 unwrap ()은 해당 요소를 파괴합니다. 다른 모든 요소는 그냥 이동하기 때문에 대부분 상당히 빠른 작업입니다.
Andy E

16

get 을 사용할 수도 있습니다 (jQuery 객체와 일치하는 DOM 요소 검색)을 .

예 :

$('div').get(0).outerHTML;//return "<div></div>"

확장 방법으로 :

jQuery.fn.outerHTML = function () {
  return this.get().map(function (v) {
    return v.outerHTML
  }).join()
};

또는

jQuery.fn.outerHTML = function () {
  return $.map(this.get(), function (v) {
    return v.outerHTML
  }).join()
};

객관식은 모든 일치하는 요소의 외부 HTML을 반환합니다.

$('input').outerHTML()

반환:

'<input id="input1" type="text"><input id="input2" type="text">'

11

FULL jQuery 플러그인을로 만들려면 .outerHTML다음 스크립트를 js 파일에 추가하고 jQuery 이후를 헤더에 포함하십시오.

업데이트 새 버전에는 더 나은 제어 기능과 jQuery Selector 친화적 인 서비스가 있습니다! :)

;(function($) {
    $.extend({
        outerHTML: function() {
            var $ele = arguments[0],
                args = Array.prototype.slice.call(arguments, 1)
            if ($ele && !($ele instanceof jQuery) && (typeof $ele == 'string' || $ele instanceof HTMLCollection || $ele instanceof Array)) $ele = $($ele);
            if ($ele.length) {
                if ($ele.length == 1) return $ele[0].outerHTML;
                else return $.map($("div"), function(ele,i) { return ele.outerHTML; });
            }
            throw new Error("Invalid Selector");
        }
    })
    $.fn.extend({
        outerHTML: function() {
            var args = [this];
            if (arguments.length) for (x in arguments) args.push(arguments[x]);
            return $.outerHTML.apply($, args);
        }
    });
})(jQuery);

이렇게하면 한 요소의 outerHTML을 얻을 수있을뿐만 아니라 한 번에 여러 요소의 Array 반환을 얻을 수 있습니다! 다음과 같이 jQuery 표준 스타일 모두에서 사용할 수 있습니다.

$.outerHTML($("#eleID")); // will return outerHTML of that element and is 
// same as
$("#eleID").outerHTML();
// or
$.outerHTML("#eleID");
// or
$.outerHTML(document.getElementById("eleID"));

여러 요소

$("#firstEle, .someElesByClassname, tag").outerHTML();

스 니펫 예제 :


9

당신은 또한 이런 식으로 할 수 있습니다

document.getElementById(id).outerHTML

여기서 id는 찾고자하는 요소의 id입니다.


4
$("#" + id).attr("id")엄청나게 중복됩니다. 변수에 이미 id가있는 경우 jquery 선택기를 사용하여 dom에서 요소를 가져온 다음 ID 속성을 쿼리하는 이유는 무엇입니까?
Sam Dufel

7

Jessica의 솔루션 (Josh가 편집 한)을 사용하여 Firefox에서 outerHTML을 작동시킵니다. 그러나 문제는 그녀의 솔루션이 요소를 DIV에 래핑했기 때문에 코드가 깨 졌다는 것입니다. 한 줄 이상의 코드를 추가하면 문제가 해결되었습니다.

다음 코드는 DOM 트리를 변경하지 않고 outerHTML을 제공합니다.

$jq.fn.outerHTML = function() {
    if ($jq(this).attr('outerHTML'))
        return $jq(this).attr('outerHTML');
    else
    {
    var content = $jq(this).wrap('<div></div>').parent().html();
        $jq(this).unwrap();
        return content;
    }
}

그리고 이것을 다음과 같이 사용하십시오 : $ ( "# myDiv"). outerHTML ();

누군가가 유용하다고 생각하기를 바랍니다!


1
@mindplay가 그의 의견에서 제안한 것처럼 .clone을 사용하면 더 쉽다
Yarin


4

시나리오가 새 행을 동적으로 추가하는 경우 다음을 사용할 수 있습니다.

var row = $(".myRow").last().clone();
$(".myRow").last().after(row);

.myrow의 클래스 이름입니다 <tr>. 마지막 행의 복사본을 만들어 새로운 마지막 행으로 삽입합니다. 이 방법은 IE7 에서도 작동 하지만 [0].outerHTML메소드는 ie7 에서 할당을 허용하지 않습니다.


3

node.cloneNode ()는 거의 해킹처럼 보이지 않습니다. 노드를 복제하여 원하는 상위 요소에 추가하고 정규 표현식을 실행하거나 DOM에 추가 한 후 개별 속성을 조작하여 노드를 조작 할 수 있습니다.

즉, 요소의 속성을 반복 하여 HTML 문자열 표현을 구성 할 수도 있습니다. jQuery를 사용하여 outerHTML 함수를 구현하는 방법 일 것입니다.


3

Jessica가 업데이트 한 Volomike의 솔루션을 사용했습니다. 요소가 존재하는지 확인하기 위해 검사를 추가하고 존재하지 않는 경우 공백으로 반환했습니다.

jQuery.fn.outerHTML = function() {
return $(this).length > 0 ? $(this).clone().wrap('<div />').parent().html() : '';
};

물론 다음과 같이 사용하십시오.

$('table#buttons').outerHTML();

3

https://github.com/darlesson/jquery-outerhtml 에서 좋은 .outerHTML () 옵션을 찾을 수 있습니다 .

요소의 HTML 내용 만 반환하는 .html ()과 달리이 .outerHTML () 버전은 선택한 요소와 해당 HTML 내용을 반환하거나 .replaceWith () 메서드로 대체하지만 대체 HTML을 상속 할 수있는 차이점이 있습니다. 연쇄.

위의 URL에서 예제를 볼 수도 있습니다.


2

Josh의 솔루션은 단일 요소에 대해서만 작동합니다.

아마도 "외부"HTML은 단일 요소가있을 때만 의미가 있지만 HTML 요소 목록을 가져 와서 마크 업으로 만드는 것이 적합한 상황이 있습니다.

Josh의 솔루션을 확장하면 여러 요소를 처리합니다.

(function($) {
  $.fn.outerHTML = function() {
    var $this = $(this);
    if ($this.length>1)
      return $.map($this, function(el){ return $(el).outerHTML(); }).join('');
    return $this.clone().wrap('<div/>').parent().html();
  }
})(jQuery);

편집 : Josh의 솔루션이 수정 된 또 다른 문제는 위의 주석을 참조하십시오.


1
대부분의 jQuery "getter"메소드는 첫 번째 요소에 대한 데이터 만 리턴하므로이 동작과 일치하는 것이 더 합리적입니다.
Andy E

왜 이런 식으로 작동하는지 분명히 밝힌 것 같습니다. 요소 목록이있을 때 추악하고 복잡한 코드를 만들 수 있습니다-어떤 이유로 든 첫 번째 요소에 대해서만 마크 업을 원하면 선택기에서 : first를 사용하십시오.
mindplay.dk

물론 다른 사람들의 솔루션과 함께 map을 사용하여 여러 요소의 HTML을 얻을 수있는 것처럼. 내가 말한 것은 표준 jQuery 메소드의 동작과 일치하는 것이 더 일관성이 있다는 것입니다.
Andy E


2

outerHTML은 tokimon 솔루션 (복제 제외)이고 outerHTML2는 jessica 솔루션 (복제) 으로이 간단한 테스트를 수행했습니다.

console.time("outerHTML");
for(i=0;i<1000;i++)
 {                 
  var html = $("<span style='padding:50px; margin:50px; display:block'><input type='text' title='test' /></span>").outerHTML();
 }                 
console.timeEnd("outerHTML");

console.time("outerHTML2");

 for(i=0;i<1000;i++)
 {                 
   var html = $("<span style='padding:50px; margin:50px; display:block'><input type='text' title='test' /></span>").outerHTML2();
  }                 
  console.timeEnd("outerHTML2");

내 크롬 (버전 20.0.1132.57 (0)) 브라우저의 결과는

outerHTML : 81ms
outerHTML2 : 439ms

그러나 네이티브 outerHTML 함수없이 tokimon 솔루션을 사용하는 경우 (현재 거의 모든 브라우저에서 지원됨)

우리는 얻는다

outerHTML : 594ms
outerHTML2 : 332ms

실제 예제에는 더 많은 루프와 요소가 있으므로 완벽한 조합은

$.fn.outerHTML = function() 
{
  $t = $(this);
  if( "outerHTML" in $t[0] ) return $t[0].outerHTML; 
  else return $t.clone().wrap('<p>').parent().html(); 
}

따라서 클론 방법은 실제로 랩 / 언랩 방법보다 빠릅니다
(jquery 1.7.2)


2

다음은 매우 최적화 된 outerHTML에 플러그인에 대한 jQuery ( http://jsperf.com/outerhtml-vs-jquery-clone-hack/5 => 2 명 등 빠른 코드 조각은 <11 FF와 같은 일부 브라우저와 호환되지 않습니다)

(function($) {

  var DIV = document.createElement("div"),
      outerHTML;

  if ('outerHTML' in DIV) {
    outerHTML = function(node) {
      return node.outerHTML;
    };
  } else {
    outerHTML = function(node) {
      var div = DIV.cloneNode();
      div.appendChild(node.cloneNode(true));
      return div.innerHTML;
    };
  }

  $.fn.outerHTML = function() {
    return this.length ? outerHTML(this[0]) : void(0);
  };

})(jQuery);

@Andy E => 동의하지 않습니다. outerHMTL은 getter와 setter가 필요하지 않습니다 : jQuery는 이미 'replaceWith'를 제공합니다 ...

@mindplay => 왜 모든 outerHTML에 참여하고 있습니까? jquery.html은 FIRST 요소의 HTML 내용 만 반환합니다.

(죄송합니다. 댓글을 작성하기에 평판이 충분하지 않습니다.)


2

짧고 달다.

[].reduce($('.x'), function(i,v) {return i+v.outerHTML}, '')

또는 화살표 기능의 도움으로 더 달콤한 이벤트

[].reduce.call($('.x'), (i,v) => i+v.outerHTML, '')

또는 jQuery가 전혀없는

[].reduce.call(document.querySelectorAll('.x'), (i,v) => i+v.outerHTML, '')

또는이 방법이 마음에 들지 않으면

$('.x').get().reduce((i,v) => i+v.outerHTML, '')

2

이것은 바닐라 JavaScript로 매우 간단합니다 ...

document.querySelector('#selector')

1

이것은 dom의 요소를 변경하는 데 좋지만 다음과 같이 html 문자열을 jquery로 전달할 때 작동하지 않습니다.

$('<div id="foo">Some <span id="blog">content</span></div>').find('#blog').outerHTML();

일부 조작 후 위의 내용을 html 문자열에서 사용할 수있는 함수를 만들었습니다.

$.fn.htmlStringOuterHTML = function() {     
    this.parent().find(this).wrap('<div/>');        
    return this.parent().html();
};


0

내 문제에 대한 답을 찾고있는 동안이 문제가 발생했습니다. 테이블 행을 제거하고 테이블 맨 아래에 다시 추가하려고했습니다 (동적으로 데이터 행을 생성했지만 'Add New' 하단의 레코드 유형 행).

innerHtml을 반환하고 TR 태그가 누락되어 해당 행의 ID를 보유하고 절차를 반복하는 것이 불가능하다는 의미에서 동일한 문제가있었습니다.

내가 찾은 대답은 jquery remove()함수가 실제로 요소를 객체로 반환한다는 것입니다. 따라서 행을 제거하고 다시 추가하는 것이 이렇게 간단했습니다 ...

var a = $("#trRowToRemove").remove();            
$('#tblMyTable').append(a);  

객체를 제거하지 않고 다른 곳에 복사하려면 clone()대신 함수를 사용하십시오 .


0

전체 요소 HTML을 직접 가져 오는 속기로서 jQuery 플러그인 :

jQuery.fn.outerHTML = function () {
    return jQuery('<div />').append(this.eq(0).clone()).html();
};

그리고 이것을 다음과 같이 사용하십시오 : $(".element").outerHTML();


-2
$("#myNode").parent(x).html(); 

여기서 'x'는 첫 번째 노드로 0으로 시작하는 노드 번호이며 특정 노드를 얻으려는 경우 원하는 노드를 가져와야합니다. 자식 노드가 있다면 실제로 원하는 노드에 ID를 입력해야합니다. 그 방법론을 사용하고 'x'는 잘 작동하지 않았습니다.


1
사람들이이 투표에 대해 의견을 남기고 싶습니까? 코드가 부모에게 올라간 다음 .html()주어진 요소에 대한 작업을 수행하는 것이 아니라 내용의 HTML을 가져옵니다 . 이 작품은 왜 작동하지 않는지 설명하고 싶습니다.
vapcguy

-4

간단한 해결책.

var myself = $('#div').children().parent();

-12
$("#myTable").parent().html();

아마도 귀하의 질문을 올바르게 이해하지 못하지만 선택한 요소의 부모 요소의 html이 표시됩니다.

그게 당신이 무엇을하고 있습니까?


25
Acually 아니오, 그 부모가 다른 자녀를 가지고 있다면 그 HTML도 얻을 수 있기 때문입니다.
David V.

1
... 그가 말한 것. 나는 요소 자체와 부모의 다른 모든 자녀가 아닌 요소 자체를 찾고 있습니다. 이것은 어떻게 두 표를 얻었습니까 ???
Ryan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.