jQuery - 使用HTML实体转义内联样式

时间:2015-10-18 08:44:27

标签: javascript jquery html

在尝试将由Javascript编辑器(CKEditor)编辑的HTML插入某个div时,我遇到了一个奇怪的问题。在要插入的HTML中,双引号被HTML实体& quot;替换。哪个工作正常。

除非& quot;以内联样式显示 - 然后jQuery删除整个内联sytyle。

我不希望他们被删除。如果可能的话,我更喜欢保留HTML实体。问题是为什么会发生这种情况?任何解决方法?

在下面的示例中,我插入了一个文本,该文本应该使得带有常规引号的span红色和带有内联样式的HTML实体转义引号。

第一行(div1)使得span为红色,div2根本不是红色。

   window.onload = function() {
 $('#div1').html('<span style="color:red;">This text "here" is red</span>, while this is not.' );
 $('#div2').html('<span style=&quot;color:red;&quot;>This text &quot;here&quot; is red</span>, while this is not.' ); }

See JSFiddle/L7cq2pfd here

1 个答案:

答案 0 :(得分:2)

jQuery将此插入为style="&quot;color:red;&quot;" - 在插入HTML之前将&quot;转换为" replace(/&quot;/g, '"')

$('#div2').html('<span style=&quot;color:red;&quot;>This text &quot;here&quot; is red</span>, while this is not.'.replace(/&quot;/g, '"') ); 

<强> http://jsfiddle.net/kb709s27/

<强>为什么?自动呈现&quot;"是浏览器功能,而不是javascript功能。 jQuery似乎解析插入的HTML并尝试纠正格式错误的属性。如果你插入

$('#div2').html('<span style=color:red>');

然后jQuery更正此问题并插入<span style="color:red">。在您的情况下,jQuery只会看到格式错误的属性,因此会尝试更正它,将&quot;color:red;&quot;包装成引号。