На этот похожий вопрос недавно был дан частичный ответ в другом обсуждении. То, что вам нужно будет сделать, это использовать тот метод, который я опубликую, а затем изменить его, чтобы он работал, если индекс последнего элемента в представлении покидает порт представления, удалите его и либо используйте .prepend (), либо вставьте его в HTML с помощью функции индекса на индекс 1.
например:
var itemToMoveToPosition1 = $('item');
$('li:(0)').html(itemToMoveToPisition1);
Что-то в этом роде. Что касается первой части вашего вопроса, вам нужно сравнить некоторые позиции. Если элемент прокручиваемый, у него есть свойство scrollTop и свойство scrollHeight. Это полная высота содержимого элемента, который он имеет, пока не прокрутится до конца. Отличается от высоты свойства. Поэтому вам нужно сравнить, когда отслеживаемый элемент находится в положении, превышающем высоту, но меньшем, чем высота прокрутки. Это означает, что это вне поля зрения. Если вам нужен пример, который более подробно объясняет это, дайте мне знать, и я могу опубликовать для вас jFiddle. Надеюсь, это поможет.