Получить Raw HTML Node в JQuery

Я использовал $("#parent").html() для получения внутреннего html #parent, но как мне получить html самого родителя?

Случай использования: я беру вход node следующим образом:

var field = $('input');

Я хотел бы получить исходный html этого node (<input type='text'>) с чем-то вроде field.html(), но это возвращает пустое. Возможно ли это?

Ответы

Ответ 1

Или вы можете создать функцию JQuery следующим образом:

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

чтобы вы могли сделать это:

$('input').outerHTML();

или

$('input').outerHTML("new html");

благодаря http://yelotofu.com/2008/08/jquery-outerhtml/

Ответ 2

Это несколько неудобно делать:

var field = $("input"); // assuming there is but 1
var html = field.wrap("<div>").parent().html();
field.unwrap();

html() является аналогом innerHTML. Нет стандартного метода outerHTML. Вышеописанный элемент, который вы хотите использовать во временном элементе, получает его innerHTML.

Ответ 3

Этот вопрос очень старый, но сейчас есть простое решение:

const html = $('input').prop('outerHTML');

Пример строкового значения html:
<input type = "input">

Возиться с этим:
https://jsfiddle.net/u0a1zkL1/3

И техника, упомянутая в комментарии Optimae, также работает:

const html = $('input')[0].outerHTML;

Ответ 4

Вы можете использовать:

var html = $('#parent')[0];

Это получит #parent node, а затем вернет код первого node, возвращенного (который будет единственным в этом случае).