Toastr如何让onHidden回调仅在success类型消息隐藏时触发?
toastr 没有提供仅针对特定类型提示设置全局回调的原生配置项,可通过以下三种方案实现需求:
- 方案1:调用success时单独传入回调(最常用)
首先删除全局配置中的onHidden项,避免所有类型提示都触发该回调,修改后的全局配置如下:
toastr.options = { "closeButton": true, "newestOnTop": true, "progressBar": true, "positionClass": "toast-bottom-right", "preventDuplicates": true, "showDuration": 400, "hideDuration": 400, timeOut: 2500, "showEasing": "swing", "hideEasing": "linear", "showMethod": "fadeIn", "hideMethod": "fadeOut", "newestOnTop": true }
之后调用toastr.success时单独传入onHidden配置即可,其他类型(error、info、warning)的toast调用保持不变:
toastr.success('操作成功', '提示', { onHidden: function() { console.log("HIDE") } })
- 方案2:封装统一的成功提示方法(适合频繁调用成功提示的场景)
如果需要多次调用成功提示,可以对toastr.success做一层简单封装,默认自带onHidden回调,无需每次调用都手动传参:
// 封装自定义成功提示方法 function customSuccessToast(message, title = '提示', options = {}) { const defaultOptions = { onHidden: function() { console.log("HIDE") } } // 合并配置,支持自定义参数覆盖默认值 const finalOptions = Object.assign({}, defaultOptions, options) return toastr.success(message, title, finalOptions) } // 调用示例 customSuccessToast('操作成功')
- 方案3:全局回调中增加类型判断(适合不想修改现有调用逻辑的场景)
如果不想调整现有代码的调用方式,可以直接在全局的onHidden回调中增加类型判断,仅当触发回调的是成功提示时才执行对应逻辑:
toastr.options = { // 其余原有配置保持不变 "onHidden": function() { // 判断当前提示框是否为成功类型 if (this.$ele.hasClass('toast-success')) { console.log("HIDE") } } }
这里的this指向当前触发回调的toast实例,$ele属性对应提示框的DOM元素,通过判断是否包含toast-success类即可识别是否为成功提示。
内容的提问来源于stack exchange,提问作者Trombone0904
相关产品推荐
相关产品推荐

