关于事件触发的一个小tips
今天看到如下代码
window.globalEvent.bind('hotelHotTableRendered', function () { $('#hotelHotTd a').each(function () { var $this = $(this); $this.attr('href', $this.attr('href') + trace.generate()); });
}); $('#hotelHotTd a').each(function () { var $this = $(this); $this.attr('href', $this.attr('href') + trace.generate()); });
此处$('#hotelHotTd a').each()部分代码引用了两次;
当时很奇怪,
Q:上面明明已经绑定了相关的事件,下面使用直接触发不就可以了吗?
A: 由于事件的触发会触发全部绑定了此事件的动作,作为主动触发的动作,在触发时很有可能其他绑定了该事件的代码还没有准备好相关的条件,就一同被动触发了;这就会有可能造成业务逻辑的混乱,从而产生错误。
结论:被动触发的事件,使用事件绑定的方式触发。主动触发的事件,应该写代码主动触发,而不绑定事件的方式触发。