2017-03-06 66 views
0

我試圖做一個顯示/隱藏功能,但我在交換圖像(引導類)時遇到問題。 顯示隱藏功能正在工作,問題是我不知道如何檢測顯示哪個類....用我有的代碼,我可以將類從分鐘更改爲加...然後用戶再次點擊該按鈕,它顯示內容,但它仍然是加班。如何在javascript中交換圖像

HTM1。

<span class="glyphicon show-hide glyphicon-minus"></span> 

JS。

$('.glyphicon-minus').click(function() 
{ 
    $('.show-hide').removeClass('glyphicon-minus').addClass('glyphicon-plus'); 
    $(this).closest('div').next('.widget-content').slideToggle(); 

    var $classto = $('.glyphicon-plus'); 
    $classto.is(':visible') 
    { 
     $('.show-hide').removeClass('glyphicon-plus').addClass('glyphicon-minus'); 
    } 
}) 

回答

1

glyphicon-plus類仍然主要是因爲您在事件監聽器中定位了「.glyphicon-minus」類。但是,當你改變你的班級glyphicon-minus不存在。切換到一個保留在元素上的類應該可以做到。

我也重構了你的代碼。

$('.show-hide').on("click",function() 
{  
    if ($(this).hasClass("glyphicon-minus")){ 
     $(this).removeClass('glyphicon-minus').addClass('glyphicon-plus'); 
    }else{ 
     $(this).removeClass('glyphicon-plus').addClass('glyphicon-minus'); 
    } 
    $(this).closest('div').next('.widget-content').slideToggle(); 

}); 
+0

謝謝很多,這個工作很完美。 – Pedro

2
$('.show-hide').on('click', function(){ 
    var $this = $(this); 
    if($this.hasClass('glyphicon-minus')) { 
    $this 
     .removeClass('glyphicon-minus') 
     .addClass('glyphicon-plus') 
     .closest('div') 
     .next('.widget-content') 
     .slideUp(); 
    } 
    else { 
    $this 
     .removeClass('glyphicon-plus') 
     .addClass('glyphicon-minus') 
     .closest('div') 
     .next('.widget-content') 
     .slideDown(); 
    } 
}); 

或者,假設你的HTML是正確初始化:

$('.show-hide').on('click', function(){ 
    $(this) 
     .toggleClass('glyphicon-plus glyphicon-minus') 
     .closest('div') 
     .next('.widget-content') 
     .slideToggle(); 
}); 

(一般情況下,你不想與非切換功能混合切換功能)

+0

不需要.slideUp和一個.slideDown函數調用,slideToggle都可以做 –

+0

@PetrosKyriakou'.slideToggle()'在某些情況下也會感到困惑。 – Ouroborus

+0

@Ouroborus如果你不知道你的代碼在做什麼,它只會讓你感到困惑。否則,當你想要「切換」效果時,滑動滑塊簡化了事情。 –