0

我正在尝试获取 div 的确切 html 内容。

使用 jQuery 中的 html() 函数时,结果与实际内容不匹配。

请检查这个小提琴并点击黑色方块:

http://jsfiddle.net/qRska/6/

编码:

<div id="mydiv" style="width:100px; height: 100px; background-color:#000000; cursor:pointer;">

    <div id="INSIDE" style="background-color:#ffffff; border-style:none;"></div>

</div>

$('#mydiv').click(function() {
    alert($(this).html());
});

jQuery 将颜色更改为 RGB 格式并删除边框样式属性。

我怎么解决这个问题?

4

2 回答 2

9

浏览器使用 HTML,生成 DOM,然后丢弃 HTMLinnerHTML(这是.html()最终命中的)将 DOM 序列化回 HTML。

如果要获取原始 HTML,则需要使用XMLHttpRequest获取当前 URL 的源代码,然后自行处理。

于 2013-07-15T16:13:49.700 回答
1

不幸的是,您想做的事情是不可能的。原始的 HTML 在被浏览器解析后是不可用的,因此您必须跳过一些箍以防止浏览器对其进行处理。

我以前使用过的一种可能的解决方案是将 HTML 包装在注释标签中,浏览器将保持不变。然后,您可以使用 jQuery 的.text()方法提取评论;用字符串替换去掉注释标签;对标记进行必要的更改;然后将其注入文档中。

另一种选择是使用 AJAX 加载 HTML。确保将其设置为contentType'text'被浏览器处理。

于 2013-07-15T16:18:12.773 回答