如果我有一个在click事件中执行某项操作的函数,取消绑定该函数然后重新绑定是否正确?
目前我有一个单击按钮时弹出的功能。它会调整大小和一切,但它在函数内运行良好。我现在的问题是,当我.hide()这个弹出窗口时,如果我尝试调整浏览器的大小,这个函数仍然是活动的(我没有在浏览器调整大小时分配这个弹出窗口)。现在我应该在点击它时取消绑定此功能吗?
由于
我的代码
function popup() {
$(window).resize(function () {
var maskHeight = $(window).height();
var maskWidth = $(window).width();
var dialogTop = (maskHeight - $('#dialog-box').height())/3;
var dialogLeft = (maskWidth - $('#dialog-box').width())/2;
$('#dialog-overlay').css({ height:$(document).height(), width:$(document).width() }).show();
$('#dialog-box').css({ top: dialogTop, left: dialogLeft, position:"fixed"}).show();
}).resize();
$('#dialog-message').html(message);
};
$('#register').click(function(){
popup();
$('html').unbind(popup);
return false;
});
甚至不确定解除绑定是否正确。但是当我尝试它时似乎没有用。
答案 0 :(得分:0)
一旦不再需要事件处理程序,取消绑定可能是一个好主意。如果它们没有负面影响,您可以选择不解除绑定。但是,如果你觉得他们放慢脚本的速度,那么取消绑定它们是一个非常好的主意,因为它们不再需要它们。
也可以在执行任何代码之前检查事件处理程序中的标志,而不是取消绑定。
答案 1 :(得分:0)
是和否。
如果您正在使用$.bind
,则可以根据需要轻松绑定和取消绑定事件。
如果您正在使用某种形式的事件委派,则维护包含状态的对象可能更容易。
state = {
my_event: false
}
然后在click事件中:
if (!state.my_event)
{
do_something();
}