Получить 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, возвращенного (который будет единственным в этом случае).