很多时候我们会在jquery代码中去拼接html代码片段,会用到onclick事件,通常在onclick中的参数会出现单双引号问题。
场景一
当传入的参数是数字类型,不进行单双引号转义,可以直接调用。
var rowKey=20181212131415;
var isApply=0;
拼接代码如下:
"<a href='javascript:void(0)' >"+value+"<span title='删除' class='glyphicon glyphicon-trash' style='float:right' aria-hidden='true' οnclick='deleteModel("+rowKey+','+modelApply+")'></span></a>"
function deleteModel(rowKey,isApply){
console.log(rowKey);
console.log(isApply);
}
这种情况下调用删除模型的方法,可以打印出值,没什么问题。
场景二
当传入的参数是字符串类型,不进行单双引号的转义则会出现问题。
var rowKey=20181212131415;
var modelName="新模型";
同样的拼接代码:
"<a href='javascript:void(0)' >"+value+"<span title='删除' class='glyphicon glyphicon-trash' style='float:right' aria-hidden='true' οnclick='deleteModel("+rowKey+','+modelName+")'></span></a>"
调用上述的删除方法,不仅打印不出东西,还需要转义。
这种转义的规则就是外面是双引号,里面被包含的就是单引号,单引号里面被包含的就是双引号,就是单中有双,双中有单。
通常我们借助转义符号进行,\"等同于',\'等同于“。
拼接代码改为:
"<a href='javascript:void(0)' >"+value+"<span title='删除' class='glyphicon glyphicon-trash' style='float:right' aria-hidden='true' οnclick='deleteModel(\""+rowKey+"\",\""+modelName+"\")'></span></a>"
则成功运行。