一、jquery动态移除/增加onclick属性
设置onclick属性:$("a").attr("onclick","test();");
删除onclick属性:$("a").removeAttr("onclick");
理论上上面的代码没问题,但实际上上面语句不执行也不报错,后来发现原因:
jquery 1.6之前的版本并不支持attr()方法对标签onclick属性的相关操作!
换句话说要使用attr()方法操作标签中的onclick属性必须使用jq库1.6或更新的库版本!
二、Select没有readonly属性,只有disabled属性,如何设置readonly
onfocus="this.defaultIndex=this.selectedIndex;" onchange="this.selectedIndex=this.defaultIndex;" style="color:gray"
三、Js参数值中含有单引号或双引号解决办法
<script type="text/javascript">
function Display(LoginEmail, UserName, ID) {
alert(LoginEmail);
}
</script>
1.使用单引号传参:
<a href="javascript:Display('[email protected]','Aleax Xie','10101239393')">Test1</a>
如果其中一个参数有一个值含有单引号,那么这个方法会出错.
<a href="javascript:Display('abc@a'bc.com','Aleax Xie','10101239393')">Test1</a>
改进: 有单引号的加上\', OK。
<a href="javascript:Display('abc@a\'bc.com','Aleax Xie','10101239393')">Test</a>
2.上面解决了单引号的问题,但如果值中有双引号又出现了问题
<a href="javascript:Display('abc@a\'bc".com','Aleax Xie','10101239393')">Test</a>
改进: 使用Onclick,给双引号加上\",单引号不用处理.并且不加“或'给JS方法
<a href="javascript:void(0)" onclick=Display("abc@\"ab'c.com","Aleax Xie","10101239393")>Test3</a>
这样解决了Js参数中有单引号与双引号的问题,但这有限制: 参数与参数之前不能有空格,参数值中不能空格,如果有空格,则用" "来代替.
四、window.print()打印base64图片问题
问题:window.print()打印时,因为window.print是异步的,所以存在图片没加载完就打印的情况。
导致图片不显示。
解决:判断图片是否加载完成,加载完成在调用打印。(直接.onload不行,当浏览器有 缓存时不会进入方法)
var t_img; // 定时器 var isLoad = true; // 控制变量(判断图片是否 加载完成) isImgLoad(function(){//判断全部打印图片加载完成 window.print(); // 加载完成 }); //判断图片加载的函数 function isImgLoad(callback){ // 查找所有打印图,迭代处理 $('.printImg').each(function(){ // 找到为0就将isLoad设为false,并退出each if(this.height === 0){ isLoad = false; return false; } }); // 为true,没有发现为0的。加载完毕 if(isLoad){ clearTimeout(t_img); // 清除定时器 // 回调函数 callback(); // 为false,因为找到了没有加载完成的图,将调用定时器递归 }else{ isLoad = true; t_img = setTimeout(function(){ isImgLoad(callback); // 递归扫描 },500); // 我这里设置的是500毫秒就扫描一次,可以自己调整 } }。。。