Bootstrap Tooltip / Popover Dismissal导致隐藏HTML元素

时间:2015-06-24 21:31:59

标签: javascript jquery html twitter-bootstrap

由于某些原因,在我的一个项目中,Tooltip.prototype.leave函数中的以下Bootstrap.js Tooltip / Popover代码在解除tip / popover时导致我的图标消失(设置为display:none)。 / p>

if (!self.options.delay || !self.options.delay.hide) return self.hide()

self.timeout = setTimeout(function () {
    if (self.hoverState == 'out') self.hide()
}, self.options.delay.hide)

我按照建议实施了popover:

<script type="text/javascript" charset="utf-8">
    $j(document).ready(function() {
        console.log($j('.help-popover'));
        $j('.help-popover').popover({
            placement: 'top'
        });
    });
</script>

<a tabindex="0" class="help-popover glyphicon glyphicon-question-sign" role="button" data-toggle="popover" data-trigger="focus" title="Help" data-content="Lorem ipsum dolor sit amet consetetur sadipscing elitr sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat sed."></a>

我对原因的一些猜测是它与项目相关还需要使用Prototype.js的旧副本,因此也使用js_noconflict.js,这就是为什么在上面的html示例中你看到{{ 1}}表示jQuery的语法。

我已经尝试在bootstrap.js的本地副本中替换对$j次调用的所有$次调用而不解决问题。任何帮助解决这个问题都将非常感激。

1 个答案:

答案 0 :(得分:0)

将Bootstrap.js第1404行替换为

//if (obj instanceof $.Event) {
    //  self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
    //}

//09-04-2016 Jay Bhavsar Changed condition if it is hover out then set instate as true
    //if (obj instanceof $.Event) {
    //  self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
    //}
    if (obj instanceof $.Event) {
        if (obj.type == 'focusout') {
            self.inState['focus'] = false;
        }
        else {
            self.inState['hover'] = true;
        }
    }

基本上是设置&#34; inState&#34;到&#34;假&#34;所以当鼠标悬停时,它会继续使用其他代码而不是返回。继续的代码是设置工具提示隐藏。