Bootstrap Tooltip "Uncaught TypeError: Cannot read property 'trigger' of null"

Bootstrap Tooltip "Uncaught TypeError: Cannot read property 'trigger' of null"

当我尝试显示新工具提示时,在销毁旧工具提示后,我在 Chrome 控制台中得到 "Uncaught TypeError: Cannot read property 'trigger' of null"。

然后,当我挖掘 bootstrap 代码时,我发现了这个: 我怀疑这是我得到的异常的原因:

我在创建新工具提示时尝试使用 "selector" 和 "container" 属性。 一件有用的事情是在另一个按钮上添加一个事件侦听器,以销毁工具提示,这样当我再次单击注册时,它可以正常工作并且不会抛出任何异常。

示例可在(点击注册两次)找到:https://jsfiddle.net/08o4qgj5/1/ 代码:

$("form#register").on("click", "button[name='btnRegister']", function () {
    //Destroy tooltip if exists
    $("input[name='email']").tooltip('destroy');
    //Adds new one
    $("input[name='email']").tooltip({title: "CYKA BLYAAAAAAT, IDI NAHUI!",
        placement: 'bottom',
        template:'<div class="tooltip" role="tooltip">' +
        '<div class="tooltip-arrow"></div>' +
        '<div class="tooltip-inner"></div>' +
        '</div>'});
    //Shows it
    $("input[name='email']").tooltip('show');
});

$("form#register").on("click", "button[name='btnDestroy']", function () {
    //Destroys tooltip
  $("input[name='email']").tooltip('destroy');
});

在我给你看的例子中,这样做有点没用,因为只有 1 个输入。但是在我的网站上,我想要发生的是:

  1. 销毁任何可能存在的工具提示
  2. 验证用户输入
  3. 如果输入无效,我想向该输入元素添加一个新的工具提示

我发现有人遇到的最相似的问题是: 但这并没有为我解决问题。

提前致谢。

由于销毁一个 html 元素可能需要一些时间,并且它的某些部分销毁甚至可能是异步处理的,当您到达新工具提示的 creation/display 时,它可能是在途中陷入了一种不受欢迎的状态。

将工具提示的初始化和显示包装在 setTimeout(f(), t) 中 t [250, 400] 在这里很好用,检查 this JSFiddle你不应该使用你的销毁按钮

setTimeout(function() {
    $("input[name='email']").tooltip({title: "CYKA BLYAAAAAAT, IDI NAHUI!",
                                    placement: 'bottom',
                                    template:'<div class="tooltip" role="tooltip">' +
                                    '<div class="tooltip-arrow"></div>' +
                                    '<div class="tooltip-inner"></div>' +
                                    '</div>'});

    //Shows it
    $("input[name='email']").tooltip('show');
  }, 250);
});

接受的答案可能无法解决此问题。 BS 工具提示和弹出窗口的问题是,如果您手动触发它们,您必须指定您手动触发它们,否则 BS 将创建目标元素事件,也就是 creates/destroys 工具提示。

...
placement: 'bottom',
trigger: 'manual',
...