Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.03.2015, 17:38
Новичок на форуме
Отправить личное сообщение для oklidog Посмотреть профиль Найти все сообщения от oklidog
 
Регистрация: 03.05.2014
Сообщений: 5

Не находит блок по селектору
Суть проблемы вот в чем, к примеру имеем два блока с классом block, один из них еще и с классом green

<div class="block">Блок 1</div>
<div class="block green">Блок 2</div>

Пишу код для добавления класса green блоку без данного класса, примерно так:

$('.block').not('.green').click(function(){
$(this).addClass('green');
})

И код, чтобы убрать класс green:

$('.block.green').click(function(){
$(this).removeClass('green');
})

С первым нажатием по блоку все работает отлично, но если нажимаю повторно на блок, что бы у блока, которому только что добавил класс green убрать данный класс, ничего не происходит. Не отрабатывает селектор.

Подскажите как разобраться в данной ситуации?

Последний раз редактировалось oklidog, 24.03.2015 в 17:43.
Ответить с цитированием
  #2 (permalink)  
Старый 24.03.2015, 18:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от oklidog
$('.block.green').click
если элемента нет как ему можно назначить клик ?
а ставят клик на элемент выше который всегда есть - читайте документацию по on
Ответить с цитированием
  #3 (permalink)  
Старый 24.03.2015, 18:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

oklidog,
или
$('.block').click(function(){
 $(this).toggleClass('green');
 })
Ответить с цитированием
  #4 (permalink)  
Старый 24.03.2015, 18:47
Новичок на форуме
Отправить личное сообщение для oklidog Посмотреть профиль Найти все сообщения от oklidog
 
Регистрация: 03.05.2014
Сообщений: 5

Изучу on поподробнее, спасибо за совет. Решил проблему проверкой класса через if is.
toogle не подходит, там еще пара манипуляций следует за сменой класса.
Скажите, получается, что обращаться можно только к элементам, которые есть на странице на момент загрузки? То есть если я создам элемент с помощью js, то не смогу потом к нему обратиться?
Ответить с цитированием
  #5 (permalink)  
Старый 24.03.2015, 18:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от oklidog
То есть если я создам элемент с помощью js, то не смогу потом к нему обратиться?
1 решение on читайте пост 2 пока не просветлеет
2 решение создали элемент после создания назначили что нужно.
Ответить с цитированием
  #6 (permalink)  
Старый 24.03.2015, 19:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

oklidog,
$('html').on('click','.block.green',function(){
 $(this).removeClass('green');
 })

только вместо html -- желательно ближайший постоянный parent
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование блоков в блок maximus Events/DOM/Window 1 14.09.2013 19:40
как скрыть блок div по ключевому слову Sacred13 Элементы интерфейса 6 06.08.2013 19:13
Показать/скрыть блок Lelja_05 jQuery 10 01.07.2013 20:05
Скрыть/показать блок в зависимости от radio MBmusic Элементы интерфейса 10 08.05.2013 17:23
Умный выскакивающий блок lobanov_kirill_ Общие вопросы Javascript 2 05.03.2013 00:29