javascript - 扩展 Bootstrap Popover 插件

标签 javascript jquery twitter-bootstrap-3 popover

我正在使用 Bootstrap 3 的 popover js 文件,默认情况下,当您悬停/单击 popover 触发器时(我只关心左/右位置),popover 在元素所在的中间垂直对齐。

看这个:enter image description here

但是,无论弹出框的高度如何,我都想修改这个默认定位。

像这样:

enter image description here

我尝试了以下方法,但是因为弹出窗口的高度可能不同,所以我没有准确地到达我想要的位置,就像上面的第二张图片一样。

$('.trigger').popover({
   trigger: 'hover',
   container: 'body'
}).hover(function(){
   var off = $('.popover').offset(),
       delta = 50,
       newY = parseInt( off.top ) + delta + 'px';

   $('.popover').css({top: newY });
});

有什么帮助吗?

编辑:有没有办法扩展 Bootstrap 工具提示 js?我最终不得不通过更改 Tooltip.prototype.getCalculatedOffset 函数来更改源代码。我所做的只是更改左/右位置以不减去 actualHeight

Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
    // return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } :
    //        placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } :
    //        placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
    //     /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width   }

    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } :
       placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } :
       placement == 'left'   ? { top: pos.top + pos.height / 2, left: pos.left - actualWidth } :
       /* placement == 'right' */ { top: pos.top + pos.height / 2, left: pos.left + pos.width   }
  }

有没有一种方法可以创建我自己的 placement 类型 - 比如 placement == 'custom-left' 和 placement = 'custom-right' ??

最佳答案

这对我有用(对于弹出窗口,而不是工具提示)

$.fn.popover.Constructor.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
    return  placement == 'bottom'? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 }:
            placement == 'top'? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 -actualWidth / 2 }:
            placement == 'left'? { top: pos.top + pos.height / 2, left: pos.left - actualWidth }:
            { top: pos.top + pos.height / 2, left: pos.left + pos.width };
};

关于javascript - 扩展 Bootstrap Popover 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279086/

相关文章:

javascript - AngularJS 选择/选项范围突破计算器

javascript - 如何检测vue组件何时通过属性更新功能?

jquery - 使用 jquery focus 清空文本字段

javascript - HTML javascript 动态调整表格大小

css - 导航栏中的 Bootstrap 3.0 按钮

jquery - Summernote富文本编辑器: minHeight and maxHeight options have no effect

JavaScript 正则表达式上的转义星号

Javascript 变音符号不敏感搜索

css - 如何配置 Cakephp 和 Bootstrap-sass?

javascript - 针对特定子组件的 React propTypes