JQuery nextAll для получения следующего элемента сложной функциональности - PullRequest
1 голос
/ 08 июля 2011

У нас есть функция, включающая серию прокручиваемых панелей.Текущий элемент li в середине панели имеет класс .selected и представлен переменной $ selectedLeft.Этот класс всегда передается, которому когда-либо li находится посередине после прокрутки.

Я хочу, чтобы следующая li прокручивала панель по щелчку так, чтобы этот элемент находился посередине.Функция scrollTo является составной частью нашей функции и работает нормально.Проблема с селекторами.В тот момент, когда вы нажимаете на функцию с селекторами, $selectedLeft.nextAll('li').next().click( function() вступает во владение.Панель не будет прокручиваться вверх или вниз.Предполагается, что это произойдет только в том случае, если будет нажата кнопка li после следующего li.

$selectedLeft.nextAll('li').click( function() {
                        myScroll2.scrollTo(0, 32, 200, true);

                    });
                    $selectedLeft.nextAll('li').next().click( function() {
                        myScroll2.scrollTo(0, 64, 200, true);

                    });
                    $selectedLeft.prevtAll('li').click( function() {
                        myScroll2.scrollTo(0, -32, 200, true);

                    });
                    $selectedLeft.prevAll('li').prev().click( function() {
                        myScroll2.scrollTo(0, -64, 200, true);

                    });

Поэтому, независимо от сложности установки, проблема заключается в селекторах, поэтому я надеюсь, что кто-то сможетвидеть это.Я попытался добавить .eq(0) и вся функция не смогла ничего сделать.

Есть идеи, что случилось?

Чудесный

Хорошая скрипка для всех вас http://jsfiddle.net/XHPYF/33/

1 Ответ

0 голосов
/ 08 июля 2011

Селектор не совсем проблема.

Объект jQuery $selectedLeft постоянно меняется, но способ написания вещей только привязывает события прокрутки к исходному объекту.Вам необходимо bind или delegate свитков ко всем будущим $selectedLeft с.

Аналогично, когда изменяется $selectedLeft, вам необходимо отменить привязку событий от предыдущего.

Другим решением было бы проверить индекс текущего выбранного li и проверить, находится ли нажатый на li один или два элемента.(например, используйте `.eq () или запись массива в отношении объекта jQuery). Это устранит некоторую" следующую "неоднозначность.

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