我试图让.html()或.append()函数通过ajax调用呈现从第三方插件返回的标记。
ajax响应(回复正常)看起来像是:
<div>
<!-- Start Third Party Markup -->
<div>
<img id="Img1" usemap="#dnc_map_43" src="charts/solution_id_6/dnc-vvvgdwwl.png?634336319915542170" style="height:294px;width:628px;border-width:0px;" />
<map name="dnc_map_43" id="Map1">
<area shape="poly" coords="0,274,628,274,628,294,0,294" href="http://www.dotnetcharting.com" alt="Visit .netCHARTING for licensing options and more information." title="Visit .netCHARTING for licensing options and more information." />
<area shape="poly" coords="381,26,616,26,616,56,381,56" href="http://www.dotnetcharting.com" alt="Visit .netCHARTING for licensing options and more information." title="Visit .netCHARTING for licensing options and more information." />
</map>
</div>
<!-- End Third Party Markup -->
</div>
但是我们无法控制格式化第三方标记的方式,并且我发现(在整个上午撕掉我的头发之后).html()或.append()jQuery函数需要标记为在任一行中,或在每个新行字符后使用“\”进行转义。
有没有人知道解决这个问题?
答案 0 :(得分:5)
如果确实如此(尽管我很难想象),您可以使用replace
方法将\n
和\r
替换为空字符串罢工>一个空间。
答案 1 :(得分:0)
剂量this解决了您的问题?如果没有,请纠正我。
答案 2 :(得分:0)
我使用jquery 1.5运行以下测试,它对我来说很好。
<div id="one">
<P>foo</p>
<p>bar</p>
</div>
<div id="two"></div>
$('#two').html( $('#one').html() );
第二个div正确地填充了第一个div的多行标记。