bootstrap fileinput和Select2不被注意的坑

很多时候我们会在项目中使用插件,比如fileinput和select2 都用到了,使用过程中没有什么问题,但是最后测试的时候,F12在页面发现每次初始化插件之后,关闭窗口都不会自动销毁,再次点击会默认为第二次初始化。所以多次点击之后,会看到向后台请求了多次URL。如何解决这个问题呢?

插件都提供了destroy方法,在每次初始化之前调用$("#DIV的ID的name").fileinput('destroy');都不起作用。

debugger之后,发现多次初始化之后在我们需要触发的click事件在向服务器按照初始化的次数多次发送请求,因为每次初始化之后我们都注册了click事件,所以在初始化之前先关闭注册的click事件:

在项目中,select2是在注册change事件的时候发送请求给服务器,所以在初始化之前关闭change事件,$ ("#envSelect").off('change');

fileinput是在上传文件成功之后filebatchuploadsuccess事件多次向服务器发送请求。所以初始化之前关闭filebatchuploadsuccess事件。

$ ("#uploadConfigFile").off('filebatchuploadsuccess');

之后发现每次点击都默认是新的初始化,只发送一次请求到服务器。

你可能感兴趣的:(IT相关,学习总结)