Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не находит блок по селектору (https://javascript.ru/forum/jquery/54609-ne-nakhodit-blok-po-selektoru.html)

oklidog 24.03.2015 17:38

Не находит блок по селектору
 
Суть проблемы вот в чем, к примеру имеем два блока с классом 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 убрать данный класс, ничего не происходит. Не отрабатывает селектор.

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

рони 24.03.2015 18:09

Цитата:

Сообщение от oklidog
$('.block.green').click

если элемента нет как ему можно назначить клик ?
а ставят клик на элемент выше который всегда есть - читайте документацию по on

рони 24.03.2015 18:11

oklidog,
или
$('.block').click(function(){
 $(this).toggleClass('green');
 })

oklidog 24.03.2015 18:47

Изучу on поподробнее, спасибо за совет. Решил проблему проверкой класса через if is.
toogle не подходит, там еще пара манипуляций следует за сменой класса.
Скажите, получается, что обращаться можно только к элементам, которые есть на странице на момент загрузки? То есть если я создам элемент с помощью js, то не смогу потом к нему обратиться?

рони 24.03.2015 18:56

Цитата:

Сообщение от oklidog
То есть если я создам элемент с помощью js, то не смогу потом к нему обратиться?

1 решение on читайте пост 2 пока не просветлеет
2 решение создали элемент после создания назначили что нужно.

рони 24.03.2015 19:01

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

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


Часовой пояс GMT +3, время: 20:50.