我正在尝试使用带有按钮的侧栏创建菜单,每个按钮都包含一个包含相关数据的指定弹出框.不幸的是,其中一个弹出窗口可能包含任意数量的行,在某些情况下,它可能部分位于视口之外.
有关问题的示例,请参阅http://jsfiddle.net/bfd9f/1/(单击"任务"按钮)
我认为我可以以编程方式将popover的top更改为已定义的值,当为负时(即在视口之外)并且为此,我已经设法在收听show.bs.popover事件时获得对popover的第一个div的引用.不幸的是,我认为由于它还没有渲染,它的大小似乎是(23,107),而它应该是(300,xxx)和(0,0)的位置.
有没有办法解决这个问题?也许首先在屏幕外渲染popover来测量它?如果是的话,我该怎么做?
谢谢
我想根据元素在屏幕上的位置动态更改弹出窗口位置(左/右,上/下).
//get_popover_placement(dom_el) returns 'left', 'right', 'top', or 'bottom'
function set_popover(dom_el) {
var the_placement = get_popover_placement(dom_el);
$(dom_el).popover({
offset: 10,
placement: the_placement
}).popover('show');
}
//set the placement on every hover
$('a[data-rel=popover]').hover(function(){
set_popover(this);
}, function(){});
Run Code Online (Sandbox Code Playgroud)
它第一次工作,但是如果元素的位置发生变化(例如,当调整窗口大小时),则不会随后调用set_popover更新放置.
我在get_popover_placement中添加了一些代码,为元素添加了不同的颜色边框,具体取决于放置位置.边框颜色每次都会更新,表示正在调用代码并且计算正在正确完成,但放置不会更新.
看起来好像放置选项只能设置一次.我怎样才能解决这个限制?是否有某个变量可以被清除以重置弹出窗口?