Прокрутка до элемента в списке - PullRequest
2 голосов
/ 13 августа 2010

У меня есть список элементов, которые я бы хотел выделить, когда пользователь выбирает элементы.Я пытался вызвать .focus () с Jquery для этих объектов безрезультатно.Я что-то пропустил?:)

РЕДАКТИРОВАТЬ: У меня есть список (ul) элементов.Я сдвигаю, щелкаю по стартовому элементу и нажимаю клавиши со стрелками, чтобы продолжить выбор.Вверх и вниз.Мне бы очень хотелось, чтобы выбор смещения работал так, как если бы он был в Finder или Windows Explorer.Прокрутка вверх, когда выбран невидимый элемент (и вниз для того же случая).

Есть ли какие-нибудь удобные плагины jQuery, чтобы справиться с этим для меня?

EDIT2: выяснил некоторые вещи и определил большую проблему.

Сейчас я использую плагин jQuery под названием scrollTo.Я могу прокрутить до элемента моего списка с помощью этого плагина.Однако «прокрутка» до элемента означает, что теперь он является первым элементом в списке, что НЕ является желательным поведением.Выберите любое количество элементов в Finder или Explorer и увидите, что когда вы перемещаете стрелку и выбираете элемент, находящийся за пределами экрана, он прокручивает только пространство вниз на один элемент и НЕ делает его верхним элементом.конечно.;) В настоящее время я отслеживаю текущий элемент за пределами экрана вверху и текущий элемент в списке, который находится за кадром внизу.Однако, когда пользователь выбирает элемент из списка после того, как он выполнил некоторую прокрутку, я в настоящее время не могу сказать, какие элементы просто не видны, создавая тупик.

Есть идеи?: P

1 Ответ

4 голосов
/ 13 августа 2010

Из вашего вопроса непонятно, но если вы говорите об автоматической прокрутке страницы (или элемента) так, чтобы определенный элемент попал в область просмотра, вы можете попробовать плагин scrollTo .

$.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, в зависимости от того, как работает ваше решение с множественным выбором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...