Переопределение индекса
Здравствуйте!
Подскажите как можно осуществить постоянное изменение переменной? var index = $('.active').index(); $('.example').css({ top: index + "0px" }); Дело в том что после присваивания другому блоку класса .active (Класс предыдущего блока удаляется) индекс не меняется, как сделать так чтоб он переопределился? |
Цитата:
Цитата:
|
рони,
А по другому никак? |
Цитата:
|
рони,
"это нормальный способ" что-то не понял про нормальный способ, что значит "что присваивает пусть то пусть и меняет индекс"? |
Цитата:
|
рони,
Вот var index = $('.active').index(); $('.example').css({ top: index + "0px" }); |
Biotoxsin,
это обрывок, нужен код который у вас не работает. Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
рони,
Выяснил что не работает именно вариант var index = $('.active').index(); Сама переменная не переназначается, если вызывать без переменной то всё работает как надо. Подскажите почему так? |
Biotoxsin,
нужен код, без кода сложно что-либо подсказать. |
рони,
<div style="height:100%" class="exemple"> <span></span> <span></span> <span></span> <span></span> </div> $('.exemple span:nth-child(1)').addClass('action'); $('.exemple').click(function() { $('.exemple span:nth-child(1)').remove('.action'); $('.exemple span:nth-child(3)').addClass('action'); }) //до этого момента код изменить нельзя, сделал что-то похожее имитирующее мою проблему. var index = $('.active').index(); $('.exemple').css({ top: index + "0px" }); Вот, только не знаю как тут реализовать тут запуск JS кода в HTML. |
Biotoxsin, ваш код ничего на странице не показывает! Не понятно, что вы хотите достичь! (Может вы забыли показать нам CSS!)
|
Цитата:
|
Господа Malleys, laimas, это пример. На примере я хочу получить индекс и присвоить его переменной, но после нажатия на окно, смены класса на другой элемент, индекс остаётся всё тот же.
Если же вставить этот код в обработчик события click (новый) то index будет обновляться после каждого нажатия. У меня же есть вопрос как этот код нужно представить чтоб переменная index обновлялась сама без использования её в событии click? "Ну и к top добавить индекс, это нечто." а что не так? Как бы вы добавили значение равное индексу? |
Кошмар какой-то. Индекс в JQ, это collection.index(element), а без относительно коллекции никакого индекса вернуться не может. Сам по себе индекс также не изменяется, он и не может измениться у элемента никак до тех пор, пока у элемента не изменится порядок в коллекции.
А индекс, это от 0 до восьмерки на боку, каким образом можно изменить top увеличивая его на индекс? |
laimas,
В документации не говориться о том что это collection.index(element) . Так же приводятся примеры без использования коллекции. К тому же как я написал способ работает если его обновлять каждый раз при помощи события например click. А вопрос как раз в том можно ли как то обновлять его в фоновом режиме так сказать. |
Цитата:
Читайте - http://jquery.page2page.ru/index.php..._наборе |
laimas,
В документации есть такой пример: alert('Index: ' + $('#bar').index()); Думаю вы его видели. Чем же он отличается от моего варианта ведь у меня active ищется среди соседних элементов которыми являются span? |
Biotoxsin,
какую задачу вы хотите выполнить? |
Biotoxsin, тогда извиняюсь, думал что вы ищите индекс не известно чего. Но не понятно что вы пытаетесь сделать. К примеру коллекция позиционирована абсолютно и сдвигается на количество элементов по индексу выбранного в группе. Берем высоту элемента и умножаем на индекс. А вы чего хотите добиться добавляя индекс к top?
|
laimas,
рони, Вот смотрите... Html структуру вы вдели. У нас есть получения индекса после загрузки страницы и присвоения active блоку span: var index = $('.active').index(); После чего в следствии работы некой функции класс active будет присваиваться другому порядковому элементу span (а именно 3-му). Если мы оставляем всё как есть, index не обновит данные о смене класса active и не сменит значение с 0 на 2. Как я писал выше, если добавить index в функцию с событием click он будет обновляться после клика. $('*любой стиль для кнопки*').click(function() { var index = $('.active').index(); console.log(index) }) А как сделать это обновление переменной index без внешнего вмешательства пользователя, а именно клика/перетаскивания/скрола и прочего? |
Это и вся проблема? Так вам рони давно уже сказал, то что изменяет его, должно заниматься и изменением значения переменной. Некая функция изменила класс, пусть и изменяет значение переменной index.
|
laimas,
В том то и дело, нельзя изменить то что его меняет |
Цитата:
PS. Видимо оба процесса, который меняет имя класса, и который пытается получить обновленный индекс, это асинхронные процессы, отсюда и проблема, которая вам кажется как невозможность первого установить значение. |
laimas, рони,
Malleys. Спасибо за подсказки, ребят, решил проблему. А всё же, если нет возможности изменить то что меняет, как тогда можно было бы решить эту задачку? |
Часовой пояс GMT +3, время: 07:13. |