2

我正在抓取各种 jquery 对象以放入数组中,然后以 HTML 形式输出。

我正在尝试将 jQuery 对象转换为文本字符串,以便以后可以将其作为 HTML 吐出。

我目前正在使用这种技术:

console.log($myObject.clone().wrap('<div></div>').html());

但是,这似乎只是在抓取我的对象的内容。

例如,如果<h2>My Title</h2>上面的 $myObject 仅返回“我的标题”(无 H2 标签)。

我也尝试使用 .text() 但得到相同的结果。

有没有办法将整个 jQuery 对象转换为文本字符串?

4

5 回答 5

5

好吧,回答我自己的问题。

console.log($('<div>').append($myObject.clone()).remove().html());

在此线程中感谢 John Feminella:

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

谁引用了这篇文章:

http://jquery-howto.blogspot.com/2009/02/how-to-get-full-html-string-including.html

于 2010-01-04T16:30:44.470 回答
1

您正在寻找的不是将 JQuery 对象转换为字符串,而是将 DOM 节点转换为其 HTML 表示。

JQuery 中没有内置方法可以做到这一点,Javascript 中也没有类似的方法。

这有点乏味,但是您可以重建它。下面的代码不完整,也没有经过测试,但这是想法

var h = '';
$('#my_selector').each(function(){
    h += '<' + this.NodeName;
    for(var k in this.attributes){
        h += ' ' + this.attributes[k].nodeName + '="' + this.attributes[k].value + '" ';
    }
    h += '>';
    h += this.innerHTML;
    h += '</' + this.NodeName + '>';
});
于 2010-01-04T16:28:12.477 回答
1

从您的示例中,您不需要使用 call $myObject.html() 吗?

但是,由于我猜测您所追求的可能不仅如此,只需将对象转换为 JSON 就可以完成这项工作吗?

有几个 jQuery 插件可以做到这一点。我用过的那个对我来说一直很有效,似乎不再有用了,但你可以在这里买到

http://jollytoad.googlepages.com/json.js

对 jQuery 插件库的搜索给出了这 2 个可能的替代方案

http://plugins.jquery.com/project/JSONEncoder
http://plugins.jquery.com/project/LABSJSON

我从未尝试过其中任何一个,因此无法保证它们的有效性

于 2010-01-04T16:33:30.853 回答
1
 console.log($('<div></div>').append($myObject.clone()).html());
于 2012-04-24T09:45:09.167 回答
0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#btnCreateNewDiv').click(function () {
                $('#result').append($('<div></div>').append($('#testClone').clone()).html());
                $('#result div:last').show();
            });
        });
    </script>
    <style type="text/css">
        .Clone
        {
            background-color: Red;
        }

        .Clone h1
        {
            color: Lime;
        }
    </style>
</head>
<body>
    <input type="button" value="Create New Div" id="btnCreateNewDiv" />
    <span id="result"></span>
    <div id="testClone" class="Clone" style="display: none;">
        <h1>
            test
        </h1>
    </div>
    ​
</body>
</html>
于 2012-04-24T10:39:10.107 回答