2014-03-02 41 views
0

我有一個ul它有CSS屬性overflow : auto如何在啓用溢出時將「li」放在「ul」之上?

現在,在某個點上,每個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元素。

+2

請提供一些相關的代碼 –

+2

目前尚不清楚你在做什麼。 –

+0

你想顯示溢出到它的父項的元素?對? –

回答

4

您應該使用本地scrollIntoView()方法:

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

如果不是你在找什麼,考慮到提高的問題。

DEMO jsFiddle

+0

該死的好回答。 :D 非常感謝! –

0

其更好地使一個div滾動,而不是UI元素:

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

這裏是使用scrollTop的工作代碼,你可以玩,並使用(它不是最佳代碼雖然): http://jsfiddle.net/pJLK8