jQuery怎么解绑事件?

1、我页面上有一个input file框:

<input type="file" id="file" name="file"/>

2、由于刚开始input是不见的,所以我用jQuery绑定事件:

$(document).on('change', '#file', function(){...})

3、问题:由于我这绑定事件会运行多次,所以我如何先解绑,再绑定事件吗?

阅读 8.9k
4 个回答
$(document).on('change', '#file', changeHandler);
function changeHandler(){
    //
}

$(document).off('change', '#file', changeHandler);

事件解除绑定:

$('#file').off('change');

事件如果绑定多次会导致事件中的函数多次执行,此时你需要保证事件只绑定了一次,事件多次运行是不需要先解绑的,如果你事件运行完成后不再需要,可以解除绑定。

一般事件多次运行,我会这么写:

$(selector).off('change').on('change', function(){...});

这样做的效果是每次点击某个元素后,会先执行消去在此元素上的所有change事件,然后再重新绑定change事件,应该是你要的效果。

$(document).on('change', '#file', function(){...})

这样写的话, 对于新生成的#file也能绑定事件, 何必多次运行呢?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进