установка и сброс классов
Доброго времени суток.
Вопрос, пожалуй, детский: есть много-много элементов div. По щелчку на элементе его стиль меняется. Нужно чтобы по щелчку по другому div с предыдущего стиль снимался. Ну, другими словами надо уникально, визуально выделять текущий див(по которому щелкнул пользователь. Делал с помощью .each снимая стили со всех, потом устанавливая. Но думаю это самый плохой способ какой можно придумать. Сейчас так: $(document).ready(function() { var $obj; $('div').click(function() { $obj.toggleClass('selectedcell'); $obj = $(this); $obj.toggleClass('selectedcell'); }); }); не работает, наверно, потому что изначально не инициализирована переменная obj, что вызывает ошибку... В общем, прошу помощи. |
<script> $(document).ready(function() { $('.allDivs').click(function() { $('.allDivs').removeClass('active'); $(this).addClass('active'); }); }); </script> Тут всем дивам нужно дать класс allDivs |
Faab,
Спасибо за быстрый ответ. Ну, в общем то это подходит. Мало практики, наверно, поэтому сам не догадался. Но, вот для практики интересует вопрос, приближенный к изначальной постановке задачи: в пределах onclick можно ли как-нибудь сохранить манипулируемый объект, а при след. нажатии вернуть ему исходное состояние. Т.е. ему одному? Еще раз спасибо за ответ. |
Да, можно передовать данные в обработчик:
<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> |
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 |
Часовой пояс GMT +3, время: 12:13. |