У меня есть следующая разметка (я создал пример в Code Pen):
<div class="slider">
<ul>
<li id="S1">
<div class="txt"><p>First slogan</p></div>
<div class="img"><img src="http://placehold.it/800x180" /></div>
</li>
<li id="S2">
<div class="txt"><p>First slogan</p></div>
<div class="img"><img src="http://placehold.it/800x280" /></div>
</li>
</ul>
<a href="#S1">1</a>
<a href="#S2">2</a>
</div>
Я хотел бы иметь следующее:
Первоначально отображается только первый элемент LI.
Если щелкнуть тег A, если его значение href не является идентификатором видимого LI, тогда:
Как я могу сделать это с помощью JQuery?
Благодарю вас, Мигель
Я считаю, что эта функция обмена должна делать трюк
Сначала добавьте класс currentStory к первым тегам LI и A <li id="S1" class="currentStory">
<a href="#S1" class="currentStory" id="S1">1</a>
Убедитесь, что ссылки имеют тот же идентификатор, что и их <li>
элементы для этого.
<a href="#S1" class="currentStory" id="S1">1</a>
<a href="#S2" id="S2">2</a>
$(document).ready(function() {
function swapStory(storyName){
$('.slider li.currentStory').hide();
$('.slider li.currentStory').removeClass('currentStory');
$('.slider [id = ' + storyName + ']').addClass('currentStory');
$('.slider [id = ' + storyName + ']').fadeIn("slow");
}
$(function() {
$('.slider li:not(".currentStory")').hide();
$('.slider a').click(function(){
swapStory($(this).attr("id"));
return(false);
});
});
});
Надеюсь, это то, что вы ищете.
возможно, использование аккордеона jQueryUI решит вашу проблему.
Проверьте это: Аккордеон
Вот пример, который я сделал, я вырезал все правила css и сделал их простыми с jquery.
конечно, вам нужно будет вернуть свои медиа-запросы.
Jquery-
$(document).ready(function(){
$('a').click(function(e){
var id = $(this).attr('href').split("#").pop();
var li = $('.slider ul li');
$('.slider ul li').each(function(key,v){
//if linked to li is hidden show it
if($(this).is(':hidden') && id == $(this).attr('id')){
$(this).fadeIn(500).slideDown("fast");
}
//if it alrready visible do nothing
else if($(this).is(':visible') && id == $(this).attr('id')){
}
else{
$(this).fadeOut(100,function(){$(this).slideUp("fast")});
}
});
});
});
fadeIn
и fadeOut
, проверить обновленный код и jsfiddle