Как мне использовать jQuery, чтобы определить, когда div находится вне поля зрения справа? - PullRequest
1 голос
/ 29 июня 2011

У меня есть div, который отображается рядом с элементом управления, когда он сфокусирован на.Первоначально div был слева от элемента управления, и жизнь была легкой.Простой if left < 0 { left = 0; } будет держать div на экране.Теперь div должен быть справа, и я не могу понять похожий фрагмент кода.Кроме того, код должен определять не только то, находится ли он за кадром справа, но также если он не виден (возможный) прокручиваемый элемент, содержащий div.Как я могу сделать это?Предположим, что прокручиваемый div, если применимо, может быть найден с помощью $('.PanelScroll'), и мы можем вызвать div, нуждающийся в размещении elem.

1 Ответ

0 голосов
/ 29 июня 2011

Это более простое решение, которое я искал:

var ctrl = $('#<your control id>');         // This is the control that the div is display to the right of.
var elem = $('#<your element id>');         // This is the div that may be out of view.
var panel = $('#<your scrollable div id>');
var left = elem.position().left;
var right = left + elem.outerWidth();

if ((panel.length && (right > panel.innerWidth())) || (right > ($(window).width() + $(window).scrollLeft()))) {
    left = left - ctrl.outerWidth() - elem.outerWidth();
}

if (panel.length) {
    left += panel.scrollLeft();
}

elem.css('left', left);
...