好吧,这是我的第一个问题——可悲的是一个新手——但如果我带你思考一下,我希望有人能帮助我扩展我的技能并整理好这个布局?
- 我正在使用引导程序
- 在一个页面中,我有一系列与同位素完美配合的 div(+ 无限滚动)
- 当用户将鼠标悬停在每个 div 上时,我想要一个弹出框来显示有关该元素的更多信息
- 这我可以开始使用
data-container="body"
到目前为止,一切都很好..
接下来,我使用以下方法找到了每个元素的正确位置:
$('#container').isotope({
itemSelector: '.item',
itemPositionDataEnabled: true
})
// log position of each item
.find('.item').each(function(){
var item_position = $(this).data('isotope-item-position');
console.log('item position is x: ' + item_position.x + ',
y: ' + item_position.y);});
(来自http://isotope.metafizzy.co/docs/options.html#itempositiondataenabled)
所以现在我遇到的问题是如何根据同位素日志给我的值影响弹出框的位置-因此,如果将元素放置在视口的最右侧-然后弹出框显示到左边或下面(而不是隐藏在视线之外)。
感谢您对此的任何帮助和指导-几乎尝试了我在这里找到的任何答案,但我无法让它们起作用..
(我已经整理了一个快速(并且由于某种原因同位素不起作用)小提琴来试图解释我在这里想要实现的目标:http: //jsfiddle.net/watcher/Kv8Bw/1/)
下次尝试发布@Bass 帮助:
@bass - 感谢帮助 - 但我认为我的 js 知识让我失望了(包括来自另一个答案的一些逻辑 - [链接]根据弹出框相对于窗口边缘的 X 位置更改 Bootstrap 弹出框的位置?)插上这个:
$("#popover").popover({
trigger: "hover focus"
});
var tmp = $.fn.popover.Constructor.prototype.show;
$.fn.popover.Constructor.prototype.show = function () {
var items = Array('top','bottom','left','right');
var position = $(this).data('isotope-item-position');
if (position.left > 515) {
return "left";
}
if (position.left < 515) {
return "right";
}
if (position.top < 110){
return "bottom";
}
return "top";
}
tmp.call(this);
但我的问题是(我认为同位素正在返回我所有物品的值,而不是我悬停的那个 - 有什么建议吗?)