如何将jQuery对象转换为字符串?
我假设你想要完整的HTML字符串。如果是这种情况,以下类似代码可以完成:
$('<div>').append($('#item-of-interest').clone()).html();
这在这里更深入地解释了,但基本上您需要创建一个新节点来包装所需项目,进行操作,然后将其删除并获取HTML。
如果您只想要一个字符串表示,则使用new String(obj)
。
我在2009年编写了最初的答案。截至2014年,大多数主流浏览器现在支持outerHTML
作为本地属性(例如,Firefox和Internet Explorer),因此您可以执行以下操作:
$('#item-of-interest').prop('outerHTML');
使用jQuery 1.6,这似乎是一种更优雅的解决方案:
$('#element-of-interest').prop('outerHTML');
只需使用.get(0)来获取原生元素,并获取其outerHTML属性:
var $elem = $('<a href="#">Some element</a>');
console.log("HTML is: " + $elem.get(0).outerHTML);
你能具体说明一下吗?如果你想要获取标签内的HTML,你可以像这样:
HTML代码片段:
<p><b>This is some text</b></p>
jQuery:
var txt = $('p').html(); // Value of text is <b>This is some text</b>
查找HTML节点(对象)可用属性和方法的最佳方式是执行以下操作:
console.log($("#my-node"));
从 jQuery 1.6+ 开始,您只需使用 outerHTML 将 HTML 标签包含在字符串输出中:
var node = $("#my-node").outerHTML;
$('#my-node').get(0).outerHTML
。 - schellmax.outerHTML
对我没用,但是 .prop('outerHTML')
有效。 - dnnsjQuery在这里,所以:
jQuery.fn.goodOLauterHTML= function() {
return $('<a></a>').append( this.clone() ).html();
}
$('div' /*elys with HTML text stuff that you want */ ).goodOLauterHTML(); // alerts tags and all
$("#id")[0].outerHTML
被接受的答案没有涵盖文本节点(会打印出未定义)。
这段代码片段解决了这个问题:
var htmlElements = $('<p><a href="http://google.com">google</a></p>↵↵<p><a href="http://bing.com">bing</a></p>'),
htmlString = '';
htmlElements.each(function () {
var element = $(this).get(0);
if (element.nodeType === Node.ELEMENT_NODE) {
htmlString += element.outerHTML;
}
else if (element.nodeType === Node.TEXT_NODE) {
htmlString += element.nodeValue;
}
});
alert('String html: ' + htmlString);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
不需要克隆并添加到DOM中才能使用.html(),你可以这样做:
$('#item-of-interest').wrap('<div></div>').html()
wrap()
不是返回被包装的元素,而不是用它进行包装的元素吗?所以这应该会给出 #item-of-interest
的 HTML,而不是它的父级 div
元素(除非 jQuery 自 2012 年 2 月以来已经更改了)。 - David Thomas可以尝试使用 jQuery.makeArray(obj)
实用函数:
var obj = $('<p />',{'class':'className'}).html('peekaboo');
var objArr = $.makeArray(obj);
var plainText = objArr[0];