2010-08-13 59 views
2

我有一個元素列表,我希望能夠在用戶選擇項目時將其引入焦點。我試着用這些對象調用.focus()與Jquery無濟於事。有什麼我失蹤? :)滾動到列表中的項目

編輯: 我有一個列表(ul)的元素。我點擊一個起始項目,然後按方向鍵繼續選擇。上和下。我真的很喜歡換檔選擇功能,就好像它在Finder或Windows資源管理器中一樣。當選擇不可見的項目時向上滾動(對於同一個案例,向下滾動)。

是否有任何方便的jQuery插件來處理這個對我?

編輯2: 找出了一些事情,並確定了一個更大的問題。

現在我正在使用名爲scrollTo的jQuery插件。我可以使用這個插件滾動到我的列表中的一個元素。然而,「滾動」到一個項目意味着它現在是列表中的第一項,這是不可取的行爲。在Finder或資源管理器中選擇任意數量的項目,並看到當你按住Shift鍵選擇一個不在屏幕外的項目時,它只會向下滾動一個項目的空間值,並且不會使其成爲頂層元素。

當然容易修復。 ;)我目前正在跟蹤頂部屏幕外的當前元素以及底部屏幕外的列表中當前元素。但是,當用戶在完成一些滾動操作後從列表中選擇了一個項目時,我目前無法分辨哪些元素只是看不見,造成了僵局。

任何想法? :P

+0

它不是很清楚你想要什麼,你可以發佈一些你正在嘗試使用的html嗎? – 2010-08-13 16:34:17

回答

3

從您的問題中不清楚,但如果您在討論自動滾動頁面(或元素)以便某個特定元素位於視口中,則可以嘗試scrollTo plugin

$.scrollTo('#something'); // scrolls the whole page so #something is in view 
$('#mydiv').scrollTo('#somethingelse'); // scrolls the (scrollable) div 

編輯:你的問題的更新提供了一個一點更深入地瞭解你在尋找什麼。我不清楚你使用什麼方法來實現輪班選擇(或者如果你真的擴大了問題的範圍,那麼要問怎麼做)。但是假設你仍然只是在詢問關於滾動塊的信息,那麼當你添加另一個列表項到你的選擇時,我會添加一個附加到任何事件(自定義?)的函數中的滾動調用。

例如,假設你觸發稱爲list_expanded自定義事件各選擇了一個<li>時間,你可以嘗試這樣的事:

$(document).ready(function(){ 
    $('ul#mylist').delegate('li','list_expanded', function(){ 
    $(this).scrollTo(); 
    }); 
}); 

很明顯,你也可以使用「常規」事件像click取決於您的多選解決方案的工作方式。

+0

非常感謝。任何有關如何使用設置身份證的建議?我想看到某個元素的ID,滾動到該元素,然後取消設置ID。 – bobber205 2010-08-13 16:53:08

+0

你怎麼知道你想要滾動到哪個元素?設置和取消設置ID沒有意義,因爲您首先必須確定要應用ID的元素。您可以使用任何jQuery選擇方法來標識元素。 – 2010-08-13 17:12:23

+0

我有我想要滾動到的列表中的哪個位置的索引。我正在嘗試使用孩子來獲取元素,但它當然不工作。:P – bobber205 2010-08-13 17:16:58

相關問題