如何把" li"在" ul"之上何时启用溢出?

时间:2014-03-02 16:16:28

标签: javascript jquery html css

我有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}}元素。

2 个答案:

答案 0 :(得分:4)

您应该使用原生scrollIntoView()方法:

$('.highlighted').get(0).scrollIntoView();

如果不是您想要的,请考虑改进问题。

DEMO jsFiddle

答案 1 :(得分:0)

最好在div中进行滚动而不是ul元素:

var topPosition = $("#liId").position().top;
$('#scrollingDiv').scrollTop(topPosition);

这是一个使用scrollTop的工作代码,您可以使用并使用它(虽然它不是最佳代码): http://jsfiddle.net/pJLK8