我知道如何使用.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,但它实际上仍然是一个对象。
答案 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("<p>").append(this.eq(0).clone()).html();
}
$('#myTag').outerHTML();
来源here。
答案 3 :(得分:0)
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>')