我想将元素的html保存到变量中

时间:2011-11-04 18:49:44

标签: jquery html

我知道如何使用.html()来获取我所选元素中的html,如下所示:

<div id="outside>
    <span>hello</span>
</div>

使用

之类的东西
var span = $('#outside).html();

将获取我的跨度作为HTML。我的问题是我什么时候

<img id="image" src="image.png">

如何将html作为字符串分配给变量?使用

var image = $('#image').html() 

给了我一个空字符串。

var image = $('#image')[0]

似乎得到了我想要的html,但它实际上仍然是一个对象。

5 个答案:

答案 0 :(得分:5)

试试这个:

var myAwesomeHTML = $('#image')[0].outerHTML

更新

$("<div></div>").append($("#image")).html()

答案 1 :(得分:2)

这可以通过将一个元素包装到它并像这样

获取parent元素的HTML来轻松完成
 var a=$('#image');
 a.wrap('<span class="ab"></span>');
 var htmlOfEle=$('.ab').html();

这是小提琴.. http://jsfiddle.net/CR2PD/2/ 它可能对你有帮助..

修改

不使用jQuery,你可以这样做

var el = document.getElementById('image');
html = el.outerHTML

答案 2 :(得分:0)

尝试将此功能创建到Jquery核心:

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


$('#myTag').outerHTML();

来源here

答案 3 :(得分:0)

firefox不支持

outerHTML。你可以尝试这样的事情:

var image = document.getElementById("image");

alert(outerHTML(image));

function outerHTML(elem){
    if (typeof elem.outerHTML !== "undefined")
    {
        return elem.outerHTML;
    }

    var s = "<" + elem.nodeName.toLowerCase();

    for (var i = 0; i < elem.attributes.length; i++)
    {
        s += " " + elem.attributes[i].name + '"' + escape(elem.attributes[i].value) + '"';
    }

    if (elem.hasChildNodes())
    {
        return s + ">" + elem.innerHTML + "</" + elem.nodeName + ">";
    }

    return s + " />";
}

答案 4 :(得分:-1)

要设置元素的html,只需使用.html()函数,但将要设置html的字符串传递给它:$('#image').html('<span>Hello</span>')