jquery动态生成dom元素设置属性包含&
最近项目中,需要在页面加载完成之后,ajax请求服务器返回json数据动态生成页面标签,但是生成的dom元素会出现字符串中的&会被转换成$amp;amp;多出了一个amp;
var a_element = $("<a href='' attr='funcTest'></a>");
a.element.attr({"href":"javascript:funcName(<info attr1='http://test.php&t=1'/>)"});
生成的DOM元素查看如下
<a href='javascript:funcName(<info attr1='http://test.php&amp;t=1'/>)'></a>
这样会导致funName函数执行的之后,参数错误,见了鬼了,我一直以为是服务器端返回的json字符串多出了字符amp;字符串,于是服务器端对字符串进行 str_replace([';amp'],[''],$data);
客户端拿到字符串后进行 replace处理 data.href.replace(/amp;/ig,'');总是不行,最后感觉应该是jquery在对字符串处理的时候自动加入的amp;
所以我就改成再使用jquery拿取字符串之后再处理
$(function(){
$(document).on('click','a[attr=funcTest]',function(ev){
ev.preventDefault();
var attr_href = $(this).attr('href');
attr_href.replace(/amp;/ig,'');
eval(attr_href);
})
});

浙公网安备 33010602011771号