Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   смена класса (https://javascript.ru/forum/jquery/19446-smena-klassa.html)

Денис2201 04.08.2011 14:18

смена класса
 
Имеется следующий скрипт:
var old_id;
				function kodimg(id) {
				if (old_id)
				document.getElementById(old_id).className = 'megaanchor';
				document.getElementById(id).className = 'megaanchor1';
				old_id = (id);
	
				}

<div class="megaanchor" id="megaanchor{@id}" onclick="kodimg(id);">

При клике меняет класс. Работает нормально,но не могу сделать условие что бы при еще одном клике на данный пункт класс менялся обратно.

ваый 04.08.2011 14:31

<script>
function toggleClass(el, class1, class2) {
    el.className = (el.className == class1) ? class2 : class1;
}</script>
<style>
span {padding: 2px 10px;}
.odd {background-color: #cd853f;}
.even {background-color: #8fbc8f;}
</style>
<span class="odd" onclick="toggleClass(this, 'odd', 'even')">Span</span>

Денис2201 04.08.2011 15:36

Цитата:

Сообщение от ваый (Сообщение 117264)
<script>
function toggleClass(el, class1, class2) {
    el.className = (el.className == class1) ? class2 : class1;
}</script>
<style>
span {padding: 2px 10px;}
.odd {background-color: #cd853f;}
.even {background-color: #8fbc8f;}
</style>
<span class="odd" onclick="toggleClass(this, 'odd', 'even')">Span</span>

Вариант интересный, но мне еще нужно учесть id. Если щелкаю по другому пункту, то у предыдущего класс должен обнуляться

http://1.petrocol.z8.ru посмотрите меню

ваый 04.08.2011 15:52

Так почему бы не посмотреть, как там сделано?

Денис2201 04.08.2011 17:20

Геморой в том, что там сделано так же. т.е. если кликать поочередно по всем 3-ем пунктам, то классы поменяются у всех. А нужно, что бы кликая на другой, то у предыдущего класс становился прежним. Так что бы активным бал только один.

walik 04.08.2011 17:23

Ну запоминай предыдущий элемент, и меняй ему класс

Денис2201 04.08.2011 21:43

Извините меня, но не могли бы вы показать на примере??
Просто я только начал изучать этот язык.

walik 05.08.2011 11:52

<style>
div {
   width: 50px;height: 20px;float: left;cursor: pointer;margin-left: 20px;
}

.simple {
   background-color: orange;
}

.active {
   background-color: white;
}
</style>
<div class="simple" onclick="check(this);">Div 1</div>
<div class="simple" onclick="check(this);">Div 2</div>
<div class="simple" onclick="check(this);">Div 3</div>
<script>
var current;
function check(obj) {
   obj.className = 'active'; //Текущему объекту присваиваем класс "active"
   if (current)
      current.className = 'simple'; //Прежнему активному ставим обратно класс "simple"
   current = obj; //Сохраняем текущий кликнутый объект
}
</script>

Денис2201 05.08.2011 12:30

Класс. Работает как нужно. Спасибо.
Но у меня еще один маленький вопрос по скрипту: если кликнуть по активному элементу, а потом еще раз, то пока не кликнешь по другим, то ничего не произойдет.

walik 05.08.2011 12:32

Денис2201,
Правильно, это же был всего лишь пример как можно сохранить объект.
Вы уже напишите свой как вам надо, или к этому добавьте приправы, немного соуса и будет вкуснятина :)


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