|
|
|
jQuery removeClass
|
|||
|---|---|---|---|
|
#18+
Коллеги, приветствую! Я в ступоре. Код следующий: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. При клике на div выхеривается класс test1 и вместо него подставляется класс test2 (о чем я вижу по alert "test2") и казалось бы при следующем клике на div ничего не должно произойти. Ан нет! Алерт опять же появляется... с классом test2 . С toggleClass та же трабла... Т.е. такое впечатление, что он как-то "не до конца" удаляется... В чем соль? :) Правильно ли я понимаю, что $(".test1").click не должен уже допускать срабатывания события? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 15:00 |
|
||
|
jQuery removeClass
|
|||
|---|---|---|---|
|
#18+
но ведь вы не меняете класс при повторном клике, почему вы считаете что должен быть какой-то другой класс, а не test2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 19:44 |
|
||
|
jQuery removeClass
|
|||
|---|---|---|---|
|
#18+
Я до конца не разбирался с методами работы с классами, но то, что там не все чисто, это точно. Вернее, наоборот - все очень стуктуризированно и логично, а мы валим все в одно кучу. Насколько знаю, обращаться к атрибуту class надо через .attr("className"), который, насколько помню, динамической сменой класса не меняется. Чтобы избежать путаниц, всегда использую назначение классов путем .attr("className", ...). А что касается вызова события, то ты не прав: конструкция $(".test1") ищет элемент и затем назначает ему событие и пока данный элемент "жив", событие назначено, вне зависимости от его класса или других параметров. Другое дело, что можно отписаться от события либо путем bind/unbind, либо если событие планируется использовать один раз, то назначить через one. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 19:54 |
|
||
|
jQuery removeClass
|
|||
|---|---|---|---|
|
#18+
luchik_5но ведь вы не меняете класс при повторном клике, почему вы считаете что должен быть какой-то другой класс, а не test2? :) в том то и "прикол". Alert при втором клике пишет "test2", но вопрос - почему срабатывает alert? Alert должен сработать только если class = test1! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2009, 07:46 |
|
||
|
jQuery removeClass
|
|||
|---|---|---|---|
|
#18+
Вы подцепили событие для элемента с классом "test1", как написал IDVsbruck, это событие будет привязано к элементу до тех пор, пока он "жив". При смене класса событие для этого элемента остается! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2009, 08:55 |
|
||
|
jQuery removeClass
|
|||
|---|---|---|---|
|
#18+
luchik_5, Вы подцепили событие для элемента с классом "test1", как написал IDVsbruck, это событие будет привязано к элементу до тех пор, пока он "жив". При смене класса событие для этого элемента остается! Риал сакс! Я круто обломался! :) ИМХО, когда команда называется remove то это должен быть реальный remove. В нашем же случае "курсор" на объект остается, удаляется лишь "видимая" строна... Тут какой-нить тогда clean надо было делать или еще какой синоним... PS: и главное в run-time дебагге мы ж видим, что объект уже сменил свой класс, казалось бы... Будем делать тогда "костыли"... Ниже текст был написан до вашего поста... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Сейчас попробывал промониторить исполнение кода... В коментариях видно поведение. При первом клике на div обработка идет по ветке $(".test0").click Команды исполняются... Класс становится test1 и при повторном клике я ожидаю, что обработка пойдет по ветке $(".test1").click , но при втором клике обработка идет опять же по ветке $(".test0").click , имея при этом class = test1! Есть у меня подозрение, что селектор класса $(.class) работает исходя из первоначального класса, а не динамически присвоенного, что не есть гутт. Посмотрите, плз, кто сможет, так ли работает у вас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2009, 09:11 |
|
||
|
jQuery removeClass
|
|||
|---|---|---|---|
|
#18+
ejnadall, вы подцепили событие конкретным элементам, которые, по воле случая, в момент подцепления имели класс test1. То что потом этот класс был с них убран не меняет того, что к ним подцеплены события. Вы подцепили события не к "элементам, которые в момент события <будут иметь> test1", а всего лишь к "элементам, которые в момент подцепления <имели> класс test1". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2009, 09:56 |
|
||
|
jQuery removeClass
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2009, 09:59 |
|
||
|
jQuery removeClass
|
|||
|---|---|---|---|
|
#18+
ejnadallКоллеги, приветствую! При клике на div выхеривается класс test1 и вместо него подставляется класс test2 (о чем я вижу по alert "test2") и казалось бы при следующем клике на div ничего не должно произойти. Ан нет! Алерт опять же появляется... с классом test2 . С toggleClass та же трабла... Т.е. такое впечатление, что он как-то "не до конца" удаляется... В чем соль? :) Правильно ли я понимаю, что $(".test1").click не должен уже допускать срабатывания события? С утра грустно было, почитал, настроение улучшилось ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2009, 10:36 |
|
||
|
jQuery removeClass
|
|||
|---|---|---|---|
|
#18+
Ушел от проблемы путем ввода нового доп.атрибута. Меняю не значение класса, а значение этого произв.атрибута и уже внутри события анализирую его значение. GWhite С утра грустно было, почитал, настроение улучшилось ). Ну так-то нооо... :) Рад что Вам помог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2009, 11:37 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=36332614&tid=1453902]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 508ms |

| 0 / 0 |
