У меня есть ul
которая имеет свойство overflow: auto
CSS overflow: auto
.
Теперь, в определенный момент, каждый li
подсвечивается по одному, основываясь на некотором взаимодействии с пользователем. Я хотел бы поместить выделенный выделенный li
вверху окна прокрутки, если это возможно.
Я просмотрел функцию jQuery scrollTo
, но я не думаю, что это сработало бы здесь, или, может быть, я не могу заставить ее работать здесь.
Каким-либо другим способом я могу достичь этой функциональности?
Вот несколько обновленных кодов.
function next_song() {
if (song_counter == playlist.length - 1) {
song_counter = 0;
} else {
song_counter++;
}
var audio = $("#audio");
var myLi = document.getElementById('play_list').getElementsByTagName('li');
for (var i = 0; i < (myLi.length); i++) {
myLi[i].style.background = "none";
myLi[i].style.color = "white";
}
$("li").eq(song_counter).css("background", "white");
$("li").eq(song_counter).css("color", "black");
nowplaying.innerHTML = song_list[song_counter];
$("#mp3source").attr("src", playlist[song_counter]);
audio[0].pause();
audio[0].load();
}
Как можно видеть, я выделяю конкретный элемент li
который может или не может быть виден внутри окна прокрутки. Я бы хотел прокрутить элемент ul
до тех пор, пока не появится этот конкретный элемент li
.
Вы должны использовать собственный scrollIntoView()
:
$('.highlighted').get(0).scrollIntoView();
Если не то, что вы ищете, подумайте о том, чтобы улучшить вопрос.
Лучше сделать прокрутку в div, а не в элементе ul:
var topPosition = $("#liId").position().top;
$('#scrollingDiv').scrollTop(topPosition);
вот рабочий код с помощью scrollTop, с которым вы можете играть и использовать (его не оптимальный код): http://jsfiddle.net/pJLK8