我已经标记为
<div id="div1">
<div id="div2">
blah blah
</div>
</div>
如果我使用 $("#div1").html(),它将返回 div#div2。但我想获得完整的 html。即,与 div#div1 一起。
有没有办法做到这一点?
我已经标记为
<div id="div1">
<div id="div2">
blah blah
</div>
</div>
如果我使用 $("#div1").html(),它将返回 div#div2。但我想获得完整的 html。即,与 div#div1 一起。
有没有办法做到这一点?
你可以试试:
$('#div1')[0].outerHTML
编辑:
相同的解决方案,但不使用 jQuery(更好的性能):
document.getElementById('div1').outerHTML
试试这个: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());
我会说尝试选择父元素,或者另一种方法是这样做:
var html = $('<div>').append($('#top').clone()).remove().html();
您可以创建一个简单的 jQuery 插件来为您完成这项工作,允许您在本地.outerHTML
属性存在时使用它,或者在它不存在时使用 polyfill。
(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));
使用 .parent():
$("#div1").parent().html();
然而,这也将获得所有兄弟姐妹的 html。您可以将 div1 包装在另一个 div 中... :)
.html()
返回innerHTML
你需要outerHTML。这可能会有所帮助。
$("<div />").append($("#div1").clone()).html();