如何将 jQuery 对象转换为字符串?

有帮助吗?

解决方案

我假设您需要完整的 HTML 字符串。如果是这样的话,类似这样的事情就可以解决问题:

$('<div>').append($('#item-of-interest').clone()).html(); 

这有更深入的解释 这里, ,但本质上你创建一个新节点来包装感兴趣的项目,进行操作,删除它,并获取 HTML。

如果您只是在寻找字符串表示形式,那么请使用 new String(obj).

更新

我在2009年写了最初的答案。截至 2014 年,大多数主流浏览器均支持 outerHTML 作为原生属性(例如,参见 火狐浏览器IE浏览器),所以你可以这样做:

$('#item-of-interest').prop('outerHTML');

其他提示

使用jQuery的1.6,这似乎是一个更好的解决方案:

$('#element-of-interest').prop('outerHTML');

只要使用获得(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;

jQuery是向上在这里,这样:

jQuery.fn.goodOLauterHTML= function() {
    return $('<a></a>').append( this.clone() ).html();
}

返回所有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()

有可能可以使用jQuery.makeArray(obj)效用函数:

var obj = $('<p />',{'class':'className'}).html('peekaboo');
var objArr = $.makeArray(obj);
var plainText = objArr[0];

如果你想字符串化为了一个HTML元素的地方通过并解析回一个元素通过创建元素的独特查询尝试:

// 'e' is a circular object that can't be stringify
var e = document.getElementById('MyElement')

// now 'e_str' is a unique query for this element that can be stringify 
var e_str = e.tagName
  + ( e.id != "" ? "#" + e.id : "")
  + ( e.className != "" ? "." + e.className.replace(' ','.') : "");

//now you can stringify your element to JSON string
var e_json = JSON.stringify({
  'element': e_str
})

大于

//parse it back to an object
var obj = JSON.parse( e_json )

//finally connect the 'obj.element' varible to it's element
obj.element = document.querySelector( obj.element )

//now the 'obj.element' is the actual element and you can click it for example:
obj.element.click();
new String(myobj)

如果您要序列整个对象的字符串,使用 JSON

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top