你的代码没错,但是没考虑道alert弹出的对话框会阻挡单击:当blur时,弹出一个框,它是有模式对话框,之后除了关闭对话框之外,任何操作都不会有效。你可以改改代码验证一下:
js 代码
var a = 0;
$(document).ready(function(){
$('.asd').click(function(){
a = a +2;
alert(a);
a = 0;
});
$('.test').blur(function(){
a = a + 1;
});
});
如果text没有焦点,直接单击button的话,弹出1
如果text有焦点,单击button的话,弹出3。
事实上,很多js程序员喜欢用alert来验证代码的有效性,这在一定程度上很有用,但是有一些例外的情况,使用alert会适得其反,让人误以为代码不对。比如ajax的异步会造成错觉,服务器返回了数据,就是alert出来的为空。
你的问题是你的代码执行了两次。
如果你想两个代码只执行一次的话,你可以考虑用BIND方法代替blur,等。不用的时候直接unbind