Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.11.2013, 21:26
Интересующийся
Отправить личное сообщение для Prowler Посмотреть профиль Найти все сообщения от Prowler
 
Регистрация: 09.07.2008
Сообщений: 28

установка и сброс классов
Доброго времени суток.
Вопрос, пожалуй, детский:
есть много-много элементов div. По щелчку на элементе его стиль меняется. Нужно чтобы по щелчку по другому div с предыдущего стиль снимался. Ну, другими словами надо уникально, визуально выделять текущий див(по которому щелкнул пользователь.
Делал с помощью .each снимая стили со всех, потом устанавливая. Но думаю это самый плохой способ какой можно придумать.
Сейчас так:
$(document).ready(function() {
var $obj;
$('div').click(function() {
        $obj.toggleClass('selectedcell');
   	$obj = $(this);
	$obj.toggleClass('selectedcell');
  });

});


не работает, наверно, потому что изначально не инициализирована переменная obj, что вызывает ошибку...
В общем, прошу помощи.
Ответить с цитированием
  #2 (permalink)  
Старый 13.11.2013, 21:38
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

<script>
$(document).ready(function() {
$('.allDivs').click(function() {
    $('.allDivs').removeClass('active');
    $(this).addClass('active');
  });
});
</script>


Тут всем дивам нужно дать класс allDivs
Ответить с цитированием
  #3 (permalink)  
Старый 13.11.2013, 21:53
Интересующийся
Отправить личное сообщение для Prowler Посмотреть профиль Найти все сообщения от Prowler
 
Регистрация: 09.07.2008
Сообщений: 28

Faab,
Спасибо за быстрый ответ. Ну, в общем то это подходит. Мало практики, наверно, поэтому сам не догадался.

Но, вот для практики интересует вопрос, приближенный к изначальной постановке задачи: в пределах onclick можно ли как-нибудь сохранить манипулируемый объект, а при след. нажатии вернуть ему исходное состояние. Т.е. ему одному?
Еще раз спасибо за ответ.
Ответить с цитированием
  #4 (permalink)  
Старый 13.11.2013, 22:32
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 456

Да, можно передовать данные в обработчик:
<script>
$(document).ready(function() {
	$('.allDivs').click({prev: 0}, function(e) {
		if (e.data.prev) e.data.prev.removeClass('active');
		e.data.prev = $(this);
		$(this).addClass('active');
	});
});
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 13.11.2013, 22:47
Интересующийся
Отправить личное сообщение для Prowler Посмотреть профиль Найти все сообщения от Prowler
 
Регистрация: 09.07.2008
Сообщений: 28

Rise,
хм, не подскажите где можно почитать о передаче параметров в функцию click, желательно, на русском? В описании на jquery-docs обработчик принимает только одно значение - функцию. Не могу понять в приведенном примере передачу карты...
Может будущим поколениям, что читать это будут пригодится: в код, приведенный мной в первом посте:

$(document).ready(function() {
var $obj;
$('div').click(function() {
    $obj.toggleClass('selectedcell');
    $obj = $(this);
    $obj.toggleClass('selectedcell');
  });
$obj=$('div:first');
$obj.toggleClass('selectedcell');
});

Костыль, конечно, но работает :-D
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
Использование классов в JavaScript devote Ваши сайты и скрипты 70 01.02.2013 17:17
Возвращение имен классов Tini2n Events/DOM/Window 7 28.05.2012 00:47
Эмуляция классов db_test Events/DOM/Window 2 14.02.2012 18:41
Импортирование списка классов aristov Dojo toolkit 3 20.11.2011 18:30