0

如果条件为真,我想在所有链接上使用 unbind(),然后在 1.5 秒后再次绑定链接。我已经尝试过了,但它不起作用:

   if ( /*some condition*/) {
     $('a').unbind();
     setTimeout(function(){
     $('a').bind();
     }, 1500);
   }
4

2 回答 2

3

您不能这样做,因为.unbind()删除了事件处理程序句号。有关他们的所有信息都将丢失。除非您已经在某处保存了单独的副本,否则您永远无法取回它们。

可以做的是编写处理程序,使它们根据外部条件修改其行为。然后,您可以切换此条件,使其看起来好像处理程序根本没有绑定。

示例(用于说明;请不要使用全局变量!):

$('a').click(function() {
    if (window.doNothing) {
        return;
    }
    // do something
});

if ( /*some condition*/) {
    window.doNothing = true;
    setTimeout(function(){
       window.doNothing = false;
    }, 1500);
}
于 2012-07-16T19:02:39.077 回答
0

你需要bind一个特定的功能。

于 2012-07-16T19:01:30.410 回答