#jquery
#jquery
Вопрос:
Я не понимаю, как сообщить моей функции, что если я снова нажму на открытые вкладки, закройте и остановите анимацию. Моя проблема сейчас в том, что я закрываю вкладку и повторяю действие .show () . Вот скрипка, которую вы можете увидеть; http://jsfiddle.net/X2dsS/1 /
$('.lst-cours .extrainfo').hide()
$('.lst-cours').click(function(){
$('.lst-cours .extrainfo').hide("slow")
$('.lst-cours .extrainfo').removeClass("active")
$(this).children().find('.extrainfo').show("slow").addClass('active')
});
Ответ №1:
Итак, в целом, вам нужно добавить оператор if для проверки класса, но вам нужно сделать это до того, как вы начнете скрывать и показывать. Затем сохраните это значение. Ниже приведен код, который работает хорошо, включая дополнительную stop
команду, которая предотвратит повторение nimation снова и снова.
$('.lst-cours').click(function(){
var clickElement = $(this).children().find('.extrainfo');
var hideOnly = clickElement.hasClass("active");
$('.lst-cours .extrainfo').stop();
$('.lst-cours .extrainfo.active').hide("slow");
$('.lst-cours .extrainfo.active').removeClass("active");
if (!hideOnly){
clickElement.show("slow").addClass('active');
}
});
Посмотрите на скрипку: http://jsfiddle.net/2Lqtp/4 /
Комментарии:
1. Проблема в том, что если я нажму на другую вкладку, когда она открыта, она закроет вкладку, но не откроет другую, на которую мы нажимаем.
2. @goregrind Окончательное решение здесь должно работать хорошо и имеет команду stop, чтобы убедиться, что анимация не повторяется. Желаю удачи!
Ответ №2:
Вам нужны небольшие изменения, пожалуйста, смотрите код ниже:
$('.lst-cours .extrainfo').hide()
$('.lst-cours').click(function(){
if($(this).children().find('.extrainfo').is(":visible"))
{
$('.lst-cours .extrainfo').hide("slow");
$('.lst-cours .extrainfo').removeClass("active");
}
else
{
$('.lst-cours .extrainfo').hide("slow");
$('.lst-cours .extrainfo').removeClass("active");
$(this).children().find('.extrainfo').show("slow").addClass('active');
}
});