Активный класс при помощи jquery

Главные вкладки

Аватар пользователя Heihachi88 Heihachi88 16 апреля 2011 в 10:07

Всем привет, подскажите пожалуйста, каким образом можно добавлять определенный класс при нажатии на ссылку с помощью jQuery?

На данный момент у меня следующая ситуация - использую маленький скрипт jQuery для того чтобы при нажатии на ссылку разворачивался тексе.

<a href="#" class="heading">Button</a>
<div class="content">Lorem ipsum dolor sit amet</div>
jQuery(document).ready(function() {
  jQuery(".content").hide();
  //toggle the componenet with class msg_body
  jQuery(".heading").click(function()
  {
    jQuery(this).next(".content").slideToggle(500);
  });
});

Вот, что в коде нужно дописать чтобы при нажатии на <a href="#" class="heading">Button</a>, добавлялся класс .active, а после того как я еще раз нажму на эту ссылку (чтобы свернуть текст) → класс .active исчезает.

Комментарии

Аватар пользователя boneg boneg 16 апреля 2011 в 10:46
jQuery(document).ready(function() {
  jQuery(".content").hide();
 
  jQuery(".heading").click(function()
  {
if (jQuery(this).hasClass('active')) {
jQuery(this).removeClass('active');
} else {
jQuery(this).addClass('active');
}
    jQuery(this).next(".content").slideToggle(500);
return false;
  });
});
Аватар пользователя boneg boneg 16 апреля 2011 в 10:59

Или так:

jQuery(document).ready(function() {
  jQuery(".content").hide();
  //toggle the componenet with class msg_body
  jQuery(".heading").click(function()
  {
    jQuery(this).next(".content").slideToggle(500);
 jQuery(this).toggleClass('active');
return false;
  });
});
Аватар пользователя Heihachi88 Heihachi88 16 апреля 2011 в 11:08
jQuery(document).ready(function() {
  jQuery(".content").hide();
  //toggle the componenet with class msg_body
  jQuery(".heading").click(function()
  {
    jQuery(this).next(".content").slideToggle(500);
 jQuery(this).toggleClass('active');
return false;
  });
});

Спасибо, работает. Но теперь при нажатии на саму ссылку - текст не раскрывается...

Аватар пользователя boneg boneg 16 апреля 2011 в 15:40

"Heihachi88" wrote:
текст не раскрывается...

у текста класс не меняли? С .content на какой-нить другой. Попробуйте вместо
jQuery(this).next(".content").slideToggle(500);

вот так:

jQuery(this).find(".content").slideToggle(500);

Аватар пользователя boneg boneg 16 апреля 2011 в 16:02
jQuery(document).ready(function() {
  jQuery(".content").hide();
    jQuery(".heading").click(function()
  {
    jQuery(this).toggleClass('active').find(".content").slideToggle(500);
 return false;
  });
});

Вот сокращенный вариант)) чето сразу не подумал))
Если вешаете свой обработчик на ссылку, игнорируя обработку браузером - функция должна вернуть false. Это так,на заметку Wink

Аватар пользователя Heihachi88 Heihachi88 16 апреля 2011 в 19:57

"boneg" wrote:
у текста класс не меняли? С .content на какой-нить другой. Попробуйте вместо
jQuery(this).next(".content").slideToggle(500);

вот так:

jQuery(this).find(".content").slideToggle(500);

У текста класс не менял)

Аватар пользователя boneg boneg 16 апреля 2011 в 20:50

стоп. только увидел, что контент идет не внутри ссылки..

jQuery(document).ready(function() {
  jQuery(".content").hide();
    jQuery(".heading").click(function()
  {
    jQuery(this).toggleClass('active').parent('div').find('.content').slideToggle(500);
 return false;
  });
});

Это на случай если где-то внутри поменялась разметка. Пробуйте.

Аватар пользователя Heihachi88 Heihachi88 17 апреля 2011 в 8:04

Тоже самое, нажимаю на ссылку для того чтобы равзернулся текст, а в итоге к ссылке добавляется класс .active, но текст не равзорвачивается.