![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| DiMoN_TD |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 16.12.2007 Репутация: нет Всего: нет |
У меня смешная ситуация. И так:
Дано: index.html
На этой же странице сл. скрипт работает:
Так вот. У меня почему то в браузере при нажатии на ссылку проход по each'у происходит НЕСКОЛЬКО раз. Причём когда нажимаешь первый раз на ссылку, то цикл как и полагается проходит один раз. Как только я нажимаю второй раз по той же ссылке, то кол-во циклов возврастает, причём непонятно как. Есть ли у кого-то идеи по этой проблеме? я кстати потому и поставил в функции click_a переменную a, типа если один раз нажали, то условие должно один раз и сработать, но опять же, при повторном нажатии Почему то это условие игнорируется и всё равно происходит запись в поле инпут. Может есть какая-то специфика функции each, о которой я не знаю? Заранее благодарю. |
||||||
|
|||||||
| DiMoN_TD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 16.12.2007 Репутация: нет Всего: нет |
В общем оказывается цикл проходит сл. образом:
При первом клике - 1 раз проходит цикл как и полагается. При втором клике - 3 раза. При третьем - 5 раз. И т.д. +2 к последнему числу итераций. Почему это именно так происходит - никак не могу разобраться. Может кто-то скажет? Заранее спасибо! |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: нет Всего: 67 |
DiMoN_TD, ну так вы же при каждом клике на td добавляете еще один обработчик клика по ссылке
причем вызывается этот код несколько раз (сколько, сколько ячеек удовлетворяет if (this.id == false && this.id != 'not') ) -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| DiMoN_TD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 16.12.2007 Репутация: нет Всего: нет |
Добавляется?????
Мдя.. а фигли он добавляется? Хорошо, ну а как тогда избежать мне этой проблемы? Я попытался функцию load вызвать вне "клика", т.е.:
Но переменная id_name почему то не хочет запоминаться уже в функции each, собственно мне теперь и сравнивать не с чем. Ступор в общем у меня :( Это сообщение отредактировал(а) DiMoN_TD - 29.3.2008, 16:41 |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: нет Всего: 67 |
DiMoN_TD, вы можете словами описать что вам нужно сделать?
А то я что-то не могу понять смысла... Получается что, по клику на ячейку, вы перебираете все td-шки и выполняете запрос на один и тот же адрес для каждой из них. У меня ступор уже в этом месте... -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| DiMoN_TD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 16.12.2007 Репутация: нет Всего: нет |
У меня есть таблица, как вы видите, разделённая на две части. С одной стороны td-шки с определёнными id-ками, имена которых совпадают с именнами подгружаемых файлов. Собственно при нажатии на одну из этих ячеек в правой части таблицы подгружается определённая страница. В этой странице php скриптом идёт выборка нужной мне информации. Далее. Т.к. работать с подгруженной информацией можно только так:
то мне пришлось создать функцию под названием click_a (т.е. при нажатии на ссылку происходит определенное действие). Собственно в той функции при нажатии, я передаю параметры, которые записываю в переменные. Ну а дальше я уже совершаю действия с этими переменными, ищу нужные мне td-ки, input-ы и т.д. Хм. Меня тут осенило. А может попробовать не проходиться каждый раз по эти td-кам, а использовать функцию .find ?? В общем жду ваших комментариев! Спасибо! |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: нет Всего: 67 |
Тогда непонятног зачем вам форич в обработчике клика по ячейке.
А что должна делать click_a? Она же не изменяет контент, а просто добавляет обработчик клика. т.к. для всех ссылок инфа одинакова. то сохраняйте ее просто в какую-то глобальную переменную вот и все. Это сообщение отредактировал(а) solenko - 29.3.2008, 17:50 -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| DiMoN_TD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 16.12.2007 Репутация: нет Всего: нет |
solenko,
Ну вот сделал я так:
Ну а теперь кол-во циклов увеличивается с каждым разом на 1 :( Т.е. первый раз он проходится один раз, второй - два раза, третий - три, ну и т.д. А функция клик, должна была мне добавлять именно тот элемент, на который я нажал, и именно в ту ячейку, куда собственно, ей и нужно встать. К сожалению, из-за этих циклов, у меня ничего не получается.. Эм. Ну впринципе всё работает, но когда дело доходит до каких-либо подсчётов, конечно же из-за того, что у меня циклы каждый раз увеличиваются - подсчёты происходят неверно. :( |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: нет Всего: 67 |
DiMoN_TD,
1. в моем примере есть foreach? Нету. А в вашем зачем он? 2. Зачем вы НАВЕШИВАЕТЕ ОБРАБОТЧИК на клик по любой ссылке? -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| DiMoN_TD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 16.12.2007 Репутация: нет Всего: нет |
solenko,
1. Как зачем? Я же при клике нахожу td с id = load и подргружаю туда свою страницу. А как иначе без прохода по td-шкам? Не подскажите? Я попробовал что Вы предложили, но это не работает, собственно оно и понятно почему. :( Или может я Вас не правильно понял? 2. Ну как же? У меня у каждой ссылки есть свои уникальные аттрибуты, которые собственно я и считываю. Потому я при клике собираю эти аттрибуты и в дальнейшем я их применяю. А собственно как мне это иначе организовать? З.Ы. признателен Вам за ответы |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: нет Всего: 67 |
Подскажу. $('td#load').html('моя_страница');, или просто $('#load').html('моя_страница'); Один раз при загрузке документа навесить обработчик на клик по ссылке. Еще раз перечитать разлел документации селекторы и пользоваться ими а не foreach. Добавить глобальную переменную, в которую заносить id активной ячейки. Четко сформулировать задачу. Потому как то, что вы описали и то, что делает ваш код -- две большие разницы. -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| DiMoN_TD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 16.12.2007 Репутация: нет Всего: нет |
solenko,
Всё, я впринципе разобрался. А что собственно происходило? Жмёшь на нужную ячейку в левой части таблицы, в правую часть таблицы (т.е. опять же в td-шку) подгружается нужная мне страница. Я нажимал на ссылку из подгруженной информации и мне вся эта инфа передавалась в нужную td-шку. Так вот тут и был косяк, т.к. информация подгружалась в TD-шку, при клике на которую у меня снова вызывалась функция $("td").click(function(){...}); и конечно же всё это происходило повторно. Хотя визуально ничего не изменялось, но на деле информация снова и снова подгружалась, снова и снова считалась, ну в общем всё это решилось тем, что информацию я подгружаю теперь не в td, а в div =) Теперь ещё один вопрос: может ли функция $("td").click(function(){...}); возвращать мне переменные return'ом?? |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Применение библиотек | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |