我想逃避“>”和“<”在一个元素属性内,不幸的是我无法弄明白。 看来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>
请您告诉我这里可能缺少什么以及如何解决这个问题?
谢谢。
答案 0 :(得分:1)
只需使用.attr
方法设置属性,内容就会自动转义:
> $('<div>').attr('foo', '<>')[0].outerHTML
"<div foo="<>"></div>"
注意:这是使用jQuery方法修改元素而不是字符串连接的原因之一。