在尝试将由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="color:red;">This text "here" is red</span>, while this is not.' ); }
答案 0 :(得分:2)
jQuery将此插入为style=""color:red;""
- 在插入HTML之前将"
转换为"
replace(/"/g, '"')
:
$('#div2').html('<span style="color:red;">This text "here" is red</span>, while this is not.'.replace(/"/g, '"') );
<强> http://jsfiddle.net/kb709s27/ 强>
<强>为什么强>?自动呈现"
到"
是浏览器功能,而不是javascript功能。 jQuery似乎解析插入的HTML并尝试纠正格式错误的属性。如果你插入
$('#div2').html('<span style=color:red>');
然后jQuery更正此问题并插入<span style="color:red">
。在您的情况下,jQuery只会看到格式错误的属性,因此会尝试更正它,将"color:red;"
包装成引号。