我标记为
<div id="div1">
<div id="div2">
blah blah
</div>
</div>
如果我使用$(“#div1”)。html(),则返回div#div2。但我希望得到完整的HTML。即,与div#div1一起。
有没有办法做到这一点?
答案 0 :(得分:3)
你可以尝试:
$('#div1')[0].outerHTML
编辑:
相同的解决方案,但没有使用jQuery(更好的性能):
document.getElementById('div1').outerHTML
答案 1 :(得分:0)
我想说尝试选择父元素,或者另一种方法是这样做:
var html = $('<div>').append($('#top').clone()).remove().html();
答案 2 :(得分:0)
使用.parent():
$("#div1").parent().html();
然而,这也将获得所有兄弟姐妹的HTML。你可以将div1包装在另一个div中......:)
答案 3 :(得分:0)
.html()
返回innerHTML
您需要outerHTML。 this可能会有所帮助。
答案 4 :(得分:0)
试试这个:http://jsfiddle.net/96u9c/3/
:)
特殊需要功能,现在您可以将它用于您自己的任何目的。
justtext
会为您提供父标记的唯一文本,其中inner
版本会为您提供子文字。
希望它有助于:)
您可以将其添加到项目中的常用javascript文件中,或者将其自定义并将其用作项目中的插件。
<强>码强>
jQuery.fn.justtext = function() {
return $(this).clone()
.children()
.remove()
.end()
.text();
};
jQuery.fn.justtextinner = function() {
return $(this).clone()
.children()
.end()
.text();
};
alert($('#div1').justtextinner());
答案 5 :(得分:0)
$("<div />").append($("#div1").clone()).html();
答案 6 :(得分:0)
您可以创建一个简单的jQuery插件来为您完成工作,允许您在存在时使用本机.outerHTML
属性,或者在不存在时将其填充。
(function($) {
if('outerHTML' in document.createElement('div')) {
$.fn.outerHtml = function() {
return this[0].outerHTML;
}
}
else {
$.fn.outerHtml = function() {
return $("<div />").append(this.eq(0).clone()).html();
}
}
}(jQuery));