根据弹出窗口的显示位置动态更改弹出窗口的位置
Dynamically change the location of the popover depending upon where it displays
我想根据元素在屏幕上的位置动态更改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(){});
它第一次工作,但如果元素的位置发生变化(例如,调整窗口大小时),则位置不会随后续对set_popover的调用而更新。
我在get_popover_placement中添加了一些代码,根据位置的不同,为元素添加了不同的颜色边框。边框颜色每次都会更新,表示正在调用代码并且计算正确,但位置不会更新。
看起来好像只能设置一次放置选项。我如何绕过这个限制?有没有一个变量可以被清除以重置弹出窗口?
尝试此更改,使用jQuery中的.on()函数附加事件侦听器:
通过更新Kevin Ansfield的-添加到放置函数的代码来更改此回复。
$('a[data-rel=popover]').popover({
placement: get_popover_placement
});
function get_popover_placement(pop, dom_el) {
var width = window.innerWidth;
if (width<500) return 'bottom';
var left_pos = $(dom_el).offset().left;
if (width - left_pos > 400) return 'right';
return 'left';
}
我刚刚再次检查了引导程序源代码,并意识到传递给placement属性的函数会得到传递参数。我设法实现了与您尝试的类似的事情,尝试以下操作,看看它是否适用于您:
$('a[data-rel=popover]').popover({
offset: 10,
placement: get_popover_placement
});
function get_popover_placement(pop, dom_el) {
// your placement function code here
}
相关文章:
- JavaScript窗口.位置不;我不在内容编辑器Web部件中工作
- JS窗口.位置不起作用
- 是否可以模拟 qUnit 测试的窗口位置对象
- 窗口位置href更改不会重新加载
- 如何在提交事件的底部设置窗口位置
- 如何在模式打开时更改窗口.位置
- 谷歌地图偏移标记/信息窗口位置(panTo/setCenter)
- 书签窗口位置javascript
- 单元测试窗口位置分配的角度问题
- JavaScript窗口位置延迟
- 如果类名和窗口位置匹配,请执行一些操作
- 会话丢失窗口.位置.href.
- JavaScript:window.conf,有两个窗口位置
- 如何从顶部获取窗口位置(以像素为单位)
- 如何在窗口位置之前显示消息 2 秒
- 休息标记位置 + 信息窗口位置
- 将标头添加到窗口.位置.路径名
- 窗口位置向上一级
- 将窗口位置替换为锚点
- 在谷歌地图中设置信息窗口位置