ECMAscript中,事宜的绑定是叠加式,而不是许多人设想的掩盖式。如:
$('button').click(function(){
alert("first");
});
$('button').click(function(){
alert("second");
});
点击button以后,会先弹出first弹出框,再弹出second弹出框(而不是只弹出second弹出框)。
而许多时刻,我们愿望实行某函数、做出某些推断以后,为元素从新绑定事宜,而不是同时保存多个事宜监听。(比方:输入暗码之前,点击“登录”提醒“输入暗码”,暗码考证胜利后点击“登录”提醒“登录胜利”)
下面引见两种要领能够完成绑定事宜掩盖结果:
(我要来秀我的成语水平了,火线高能,非战斗人员敏捷撤离)
1.妙手回春法
$('button').die().live('click',function(){
//新的绑定事宜
});
先运用die()
要领移除一切经由过程live()
要领向元素增加的事宜处置惩罚顺序,再经由过程live()
要领绑定新的事宜。
这类要领有个条件,那就是被掩盖的要领也必需是经由过程live()
要领绑定的,不然die()
要领“杀不死”它们,会完整没有结果。
2.欲擒故纵法
$("button").unbind('click').click(function(){
//新的绑定事宜
});
和第一种要领相似,先运用unbind()
要领移除一切元素的事宜处置惩罚顺序,再绑定新的事宜(背面能够改成bind()
要领举行绑定)。
这类要领也有个条件,那就是被掩盖的要领如果是经由过程live()
要领绑定的,会没有结果。
置信一定有多事的小伙伴要问了,究竟什么时刻用bind()
要领或许live()
要领?二者的区分是什么?
但是我要放工了,这个题目有点庞杂,我会留到下一篇文章和人人一同探究。