我的HTML和JavaScript代码如下所示:
<html>
<!--...
many code
...-->
<button onclick="alert($('#mytable').html().wrap('<html/>') );">Show HTML Table</button>
<table id="myTable">
<tr's and td's>
</table>
<!--...
many code
...-->
</html>
我希望我的javascript返回HTML标记包装的表格,但我不希望表格本身被更改。
答案 0 :(得分:4)
您可以先获取该表的副本:
$('#mytable').clone()...
要获取代码的实际HTML,您需要使用我在another answer yesterday发布的此插件:
(function($) {
$.fn.outerhtml = function() {
return $('<div/>').append(this.clone()).html();
};
})(jQuery);
所以你可以这样做:
alert('<html>' + $('#myTable').outerhtml() + '</html>');
有关正常工作的演示,请参阅http://jsfiddle.net/alnitak/2y988/。
答案 1 :(得分:3)
这不起作用。 .html()
返回一个字符串,而不是jQuery对象。因此,您无法在其上调用wrap
。
另一个问题是.html()
只返回内部HTML ,它不包含table
标记。
您可以.clone()
节点,将其附加到某个虚拟元素并返回.html()
:
var html = ['<html><body>',
$('<div/>').append($('#mytable').clone()).html(),
'</body></html>'].join('');
答案 2 :(得分:1)
也许这个jQuery outerHTML plugin会对你有所帮助。它将为您提供表格的代码,包括封闭的<table>
标签。您可以执行alert("<html>" + $("#myTable").outerHtml() + "</html>")
之类的操作。
答案 3 :(得分:0)
为什么不执行以下操作?:
alert('<html>'+$('#mytable').html()+'</html>');
答案 4 :(得分:0)