在 IE 中将“<”和“>”作为元素属性值的一部分进行转义
Escape "<" and ">" as part of element attribute value in IE
我想在元素属性中转义">"和"<",不幸的是我无法弄清楚。看起来默认情况下,IE outerHTML 正在转义 & 字符,一旦我尝试转义">"(将">"替换为"amp+gt;"),作为"amp+gt;"一部分的 & 符号再次被转义。下面是一个示例代码:
var div = '<div atr="test & and < and >"></div>';
var $el = $(div);
console.log("txt string: " + div);
console.log("$el outerHTML BEFORE escaping: " + $el[0].outerHTML);
var rgx = new RegExp(">", "g");
$el.attr("atr", $el.attr("atr").replace(rgx, ">"));
console.log("$el outerHTML AFTER escaping: " + $el[0].outerHTML);
这是此代码的输出:
txt string: <div atr="test & and < and >"></div>
$el outerHTML BEFORE escaping: <div atr="test & and < and >"></div>
$el outerHTML AFTER escaping: <div atr="test & and < and &gt;"></div>
正如人们所看到的,& 符号是更大然后转义的一部分再次被转义。基本上我需要的是:
<div atr="test & and < and >"></div>
你能让我知道这里可能缺少什么以及如何解决这个问题吗?
谢谢。
只需使用 .attr
方法设置属性,内容将自动转义:
> $('<div>').attr('foo', '<>')[0].outerHTML
"<div foo="<>"></div>"
注意:这就是为什么使用jQuery方法来修改元素而不是字符串连接的原因之一。
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 作为onclick确认的一部分,Razor中的字符串属性
- “data-”属性作为超链接的一部分.HTML 到 JavaScript
- VueJS - 初始化作为模板或$el属性的一部分加载的标签输入表单字段
- 在 IE 中将“<”和“>”作为元素属性值的一部分进行转义
- 可以将元素属性更改作为动画链的一部分
- 如何将 ID 数组与包含其 ID 作为属性名称一部分的对象属性进行匹配
- 选择“属性的一部分-JQuery”
- 如何根据密钥名称的一部分对javascript对象属性进行分组
- 只获取数据属性中的一部分
- 如何更改src属性的一部分未知
- 将属性添加到字符串的一部分
- 如何打印字符串数组,这是JSON的一部分,由其他属性组成
- 我如何在我的网页内嵌入一个特定的名称属性的网页的一部分
- 如何使用jQuery替换嵌入flashvars属性的一部分?
- 用数据属性替换不同类名的一部分
- 用JavaScript更改锚链接属性的一部分
- 作为HTML5数据属性的一部分调用和传递Javascript参数