2012-10-29 72 views
4

我正在使用的選擇框有4個頂級選項,每個選項都帶有下方的選項列表。所選的一個出現在列表的底部,這意味着用戶仍然需要向上滾動才能看到子選項。使選擇框中的選定選項始終顯示在頂部

我的問題是,我怎樣才能使'選擇'選項在頂部?即,使整個選擇框滾動,以便它出現在頂部?

+1

http://stackoverflow.com/questions/1280499/jquery-set-select-index這http://stackoverflow.com/questions/7445492/how使用jquery – riti

+0

我認爲這是依賴於瀏覽器,即瀏覽器決定在哪個滾動級別顯示選擇框下拉 – redShadow

+0

這是一個選擇元素與多個設置爲true? – epascarello

回答

1

試試這個:

$('select option:selected').before($('select option:first')); 

如果這是你的意思?

+0

海報不想移動實際選定的選項,只是希望滾動不同。這將搞砸OP的訂單。 – epascarello

+0

「我的問題是,我怎樣才能讓」選定「選項位於最上方?即,讓整個選擇框滾動以便它出現在頂部?」這是一個模棱兩可的問題。 –

1

你可以做的是找到選定的索引,在結尾選擇一個選項並重新選擇所選項目,該項目將出現在列表頂部。這是hacky,但工程。這也只適用於單選,如果是多選,則必須重新選擇所有選項。

var sel = ​document.getElementById("yourSelect"); 
var optsLen = sel.options.length; 
var selIndex = sel.selectedIndex; 
var size = sel.size; 
if (selIndex>=size) { 
    var newIndex = selIndex+size+1; 
    if (newIndex>optsLen) { 
     newIndex = optsLen; 
    } 
    sel.selectedIndex = newIndex; 
    setTimeout(function(){sel.selectedIndex = selIndex},1); //slight delay so line above runs 
} 

JSFiddle

相關問題