click事件上可以绑定多个函数,这形成一个链,如果你绑定了a和b两个函数,则执行过程是这样的:
click -> 找到a -> 执行a -> 继续找 -> 找到b -> 执行b
所以你现在的过程其实是这样的:
click -> 找到go -> 执行go -> 添加了close -> 继续找 -> 找到了close -> 执行close
因为在go的过程中把close加到了事件函数链上,所以在go执行完后继续延着链向下找就执行了close
可以考虑使用setTimeout来做,或许能解决这个问题
$('#Test a').text('关闭');
setTimeout(function() {
$('#Test a').bind('click', function() { close(); });
}, 0);
可以先unbind的一下,然后再bind
Code
顶上