Ну, вот мой первый вопрос - и, к сожалению, для новичка - но если я проведу вас через свои мысли, я надеюсь, что кто-то поможет мне расширить мои навыки и разобрать этот макет?
- я использую бутстрап
- на одной странице у меня есть серия 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 подводят меня сюда (включая некоторую логику из другого ответа - [ссылка] Изменение положения всплывающих окон Bootstrap на основе позиции X всплывающего окна по отношению к краю окна?) были подключены к этому:
$("#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);
Но моя проблема в том, что (я думаю, что изотоп возвращает значения ВСЕХ моих элементов, а не того, над которым я наведен - есть предложения?)
var position = this.$element.data('isotope-item-position');
и заменитеreturn "left";
наthis.options.placement = 'left'
и т. д. - person Bass Jobsen   schedule 05.07.2013