Bootstrap Tooltip“Uncaught TypeError:无法读取属性'触发器'为null”

问题描述 投票:1回答:1

当我尝试显示新的工具提示时,在销毁旧工具提示后,我在Chrome控制台中收到“未捕获的TypeError:无法读取属性'触发器'的null”。

然后,当我在挖掘引导代码时,我发现了这一点:我怀疑这是我得到的异常的原因:

我在创建新工具提示时尝试使用“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. 如果输入无效,我想向该输入元素添加一个新的工具提示

我发现有人遇到的最类似的问题是:Bootstrap 3 Tooltip flickers,但这对我没有解决。

提前致谢。

exception twitter-bootstrap-3 tooltip flicker
1个回答
1
投票

因为破坏html元素可能需要一些时间,并且它的某些部分甚至可以异步处理,当你到达新工具提示的创建/显示时,它可能会陷入不需要的状态。

使用t [250,400]在setTimeout(f(),t)中包装初始化和显示工具提示效果很好,请查看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);
});
© www.soinside.com 2019 - 2024. All rights reserved.