我有ul
,其CSS属性为overflow : auto
。
现在,在某个时刻,每个li
会根据一些用户互动一次突出显示一个li
。如果可能的话,我想将当前突出显示的scrollTo
放在滚动窗口的顶部。
我已经查看了jQuery 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
元素,直到看到这个特定的{{1}}元素。
答案 0 :(得分:4)
您应该使用原生scrollIntoView()
方法:
$('.highlighted').get(0).scrollIntoView();
如果不是您想要的,请考虑改进问题。
答案 1 :(得分:0)
最好在div中进行滚动而不是ul元素:
var topPosition = $("#liId").position().top;
$('#scrollingDiv').scrollTop(topPosition);
这是一个使用scrollTop的工作代码,您可以使用并使用它(虽然它不是最佳代码): http://jsfiddle.net/pJLK8