У меня есть две кнопки бок о бок, которые при нажатии отмечаются "активным" классом, а также запускают эффект слайда CSS на ниже div.
При первом нажатии страницы кнопка A уже классифицируется как "активная", а слайд 1 открыт. Когда вы нажимаете кнопку B, она успешно классифицируется как "активная", а слайдер успешно слайд слайд 2 (справа налево).
То, что я не могу исправить, заключается в том, как теперь изменить слайдер, если кнопка A снова нажата. Я посмотрел примеры на живых веб-сайтах, которые показывают то же самое, но они кажутся намного более сложными, чем то, что должно быть.
HTML:
<div id="get-in-touch" class="row show-for-medium-up">
<ul class="tab-navigation small-12 columns">
<li id="say-hello-form">
<div class="small-12 medium-6 columns">
<h4>Want to say hello?</h4>
<button id="send-message" class="active" rel="tab1">Send us a Message</button>
</div>
</li>
<h4 class="or">OR</h4>
<li id="start-project-form">
<div class="small-12 medium-6 columns">
<h4>Want to work with us?</h4>
<button id="kick-start" rel="tab2">Kick Start your Project</button>
</div>
</li>
</div>
</div>
<section id="say-hello-wrapper-outer" >
<section id="say-hello-wrapper-inner" class="row">
<section id="say-hello" class="active hide-for-small tab-container">
<div id="tab1" class="row tab_content">
<div class="medium-6 columns">
<div id="map">
<p>We work remotely with clients all over Australia!</p>
<img src="<?php echo get_template_directory_uri(); ?>/img/map.jpg">
</div>
</div>
<div id="form" class="medium-6 columns">
<?php gravity_form(2, false, false, false, '', true); ?>
</div>
</div>
<div id="tab2" class="row tab_content">
<div id="form" class="medium-12 columns">
<?php gravity_form(3, false, false, false, '', true); ?>
</div>
</div>
</section>
</section>
</section>
CSS:
#say-hello-wrapper-outer {
background: #f5f6fa;
width: 100%;
}
#say-hello-wrapper-inner {
overflow: hidden;
background: #f5f6fa;
}
#say-hello {
width: 2280px;
height: 2000px;
overflow: hidden;
margin-left: -1140px;
// margin-left: -1100px;
-webkit-transition: margin-left 0.6s;
-moz-transition: margin-left 0.6s;
transition: margin-left 0.6s;
#tab1, #tab2 {
width: 1170px;
float: left;
}
}
#say-hello > #form {
border-bottom: 1px solid #ebebeb;
}
#say-hello.active {
margin-left: 0px;
}
JS:
jQuery("ul.tab-navigation li button").click(function() {
jQuery("ul.tab-navigation li button").removeClass("active");
jQuery(this).addClass("active");
jQuery('#say-hello').removeClass("active", function() {
jQuery('#say-hello').addClass("active");
});
});
Проблема в том, что вы пытаетесь запустить одно и то же на каждой кнопке, вы можете различать их с помощью инструкции if:
jQuery("ul.tab-navigation li button").click(function() {
jQuery("ul.tab-navigation li button").removeClass("active");
jQuery(this).addClass("active");
if (this.id == "kick-start"))
jQuery('#say-hello').removeClass("active");
else
jQuery('#say-hello').addClass("active");
});
Это применило бы класс "active" к слайдеру только при нажатии кнопки kickstart.
Если я могу дать вам небольшое предложение, не полностью связанное с вашим вопросом, это начать наименование вещей менее запутанным способом, например, применяя "активный" класс как к ползунку, так и к кнопке и играя в одной и той же функции области вскоре начнут испытывать боль, когда вы попытаетесь его отладить.
Кроме того, попробуйте написать код, поскольку он будет писать отдельный пакет для себя, чтобы повторно использовать его столько, сколько вы можете без его readapting, а это означает следующее:
Вы, вероятно, согласитесь со мной, что <button class="js-slider" data-position="left">
работает более эффективно, чем использование и перекодирование каждого элемента кнопки каждый раз.
Это может показаться очевидным для кого-то, но это дает вам возможность начать писать более чистый и легкий код, который очень легко отлаживать для вас (и других, чтобы помочь вам).