2017-06-14 63 views
0

在html中,我在.fig-8錨點中有2個圖像。如何在一些不同的元素中切換一個類?

.img-active = display: block

.img-inactive = display: none

HTML:

<div class="tabs1"> 
    <a class="fig-8" data-tab="tab1"> 
     <img src="/path.png" class="img-active"> 
     <img src="/selected.png" class="img-inactive"> 
    </a> 

    <a class="fig-8" data-tab="tab2"> 
     <img src="/path1.png" class="img-active"> 
     <img src="/selected.png" class="img-inactive"> 
    </a> 

    <a class="fig-8" data-tab="tab3"> 
     <img src="/path2.png" class="img-active"> 
     <img src="/selected.png" class="img-inactive"> 
    </a> 
</div> 

所有我需要的是,當你點擊錨,.img-activedisplay: none.img-inactive = display: block

我這樣做的js文件:

$('.tabs1 a').on('click', function() { 
    $(this).find('.img-active').hide(); 
    $(this).find('.img-inactive').show(); 
}); 

它做我想要什麼,但如果你點擊第二個或第三個錨,在那裏我點擊圖片沒有得到到原來的形狀(默認圖片。)。

有什麼建議嗎?

+0

你是什麼意思的原始形狀? – VivekN

+0

@VivekN之前的圖像。默認的一個。 – TheUnnamed

+0

Bah,不記得jQuery。基本上,你想找到每個人,隱藏他們,然後找到點擊的目標,並顯示一個。 – Will

回答

2

使用CSS不能實現這個嗎?您可以使用:focus僞類。

.img-inactive,.img-active {float:left;} 
 
.img-inactive {display:none;} 
 
.img-active {display:block;} 
 

 
a:focus .img-inactive {display:block;} 
 
a:focus .img-active {display:none;}
<div class="tabs1"> 
 
    <a class="fig-8" data-tab="tab1" href="#"> 
 
     <img src="//placehold.it/150/5C5/FFF?&text=active" class="img-active"> 
 
     <img src="//placehold.it/150/C55/FFF?&text=inactive" class="img-inactive"> 
 
    </a> 
 

 
    <a class="fig-8" data-tab="tab2" href="#"> 
 
     <img src="//placehold.it/150/5C5/FFF?&text=active" class="img-active"> 
 
     <img src="//placehold.it/150/C55/FFF?&text=inactive" class="img-inactive"> 
 
    </a> 
 

 
    <a class="fig-8" data-tab="tab3" href="#"> 
 
     <img src="//placehold.it/150/5C5/FFF?&text=active" class="img-active"> 
 
     <img src="//placehold.it/150/C55/FFF?&text=inactive" class="img-inactive"> 
 
    </a> 
 
</div>

否則,它也很容易做到與jQuery

$('.tabs1 a').on('click', function() { 
 
    $('.tabs1 a .img-inactive').hide(); 
 
    $('.tabs1 a .img-active').show(); 
 
    $(this).find('.img-inactive').show(); 
 
    $(this).find('.img-active').hide(); 
 
});
.img-inactive,.img-active {float:left;} 
 
.img-inactive {display:none;} 
 
.img-active {display:block;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="tabs1"> 
 
    <a class="fig-8" data-tab="tab1" href="#"> 
 
     <img src="//placehold.it/150/5C5/FFF?&text=active" class="img-active"> 
 
     <img src="//placehold.it/150/C55/FFF?&text=inactive" class="img-inactive"> 
 
    </a> 
 

 
    <a class="fig-8" data-tab="tab2" href="#"> 
 
     <img src="//placehold.it/150/5C5/FFF?&text=active" class="img-active"> 
 
     <img src="//placehold.it/150/C55/FFF?&text=inactive" class="img-inactive"> 
 
    </a> 
 

 
    <a class="fig-8" data-tab="tab3" href="#"> 
 
     <img src="//placehold.it/150/5C5/FFF?&text=active" class="img-active"> 
 
     <img src="//placehold.it/150/C55/FFF?&text=inactive" class="img-inactive"> 
 
    </a> 
 
</div>

1

你可以試試這個: -

$('.tabs1 a').on('click', function() { 
    $('.img-active').not(this).show(); 
    $('.img-inactive').not(this).hide(); 
    $(this).find('.img-active').hide(); 
    $(this).find('.img-inactive').show(); 
}); 
+0

你能解釋一下爲什麼那裏有'.not'嗎? – TheUnnamed

+0

所以,如果我正確理解你的問題,你想把所有以前的圖像恢復到原來的樣子,並且當前點擊的圖像不同。所以我將除此之外的所有其他圖像(這是當前點擊的圖像)帶到那裏狀態和$(this)以您想要的方式顯示:顯示:none .img-active和display:block for .img-inactive – VivekN

相關問題