2014-04-16 67 views
1

我有一個切換div的按鈕。該功能是:slideToggle在從函數調用時向上滑動然後向下滑動

function toggleMiniCart() { 
$('#mini_cart_more').click(function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
     $('#mini_cart_dropdown').slideToggle('fast'); 
     if($('#mini_cart_dropdown').css('display') == 'none') { 
    $(this).addClass('mini_cart_less'); 
    $(this).removeClass('mini_cart_more'); 
     } 
     else { 
    $(this).removeClass('mini_cart_less'); 
    $(this).addClass('mini_cart_more'); 
    }     
    }) 
} 

我已經調用的函數像文件裝載:

$(document).ready(function() { 
    toggleMiniCart(); 
}); 

這工作得很好。但是,當我從另一個函數調用它並單擊#mini_cart_more時,div滑落,然後備份。

function add_to_cart() { 
    $('.add_to_cart').click(function() { 
     //do some ajax 
     toggleMiniCart(); 
    }); 
} 
+0

我正在使用它。我認爲問題在於我如何/在哪裏致電 – Judson

+0

對我有何反饋? –

回答

0

的問題是,它試圖每個toggleMiniCart是運行時間增加點擊功能。將點擊監聽器放在函數之外,並將其引用到點擊監聽器中,如下所示:

function toggleMiniCart() { 
    $elem = $("#mini_cart_dropdown"); 
    $elem.slideToggle('fast'); 
    if($elem.css('display') == 'none') { 
     $elem.addClass('mini_cart_less'); 
     $elem.removeClass('mini_cart_more'); 
    } else { 
     $elem.removeClass('mini_cart_less'); 
     $elem.addClass('mini_cart_more'); 
    }     
} 
function add_to_cart() { 
    $('.add_to_cart').click(function() { 
     //do some ajax 
     toggleMiniCart(); 
    }); 
} 

$(document).ready(function() { 
    $('#mini_cart_more').click(function(e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
     toggleMiniCart(); 
    }); 
}); 
+0

這似乎是工作,除了我不得不刪除toggleMiniCart();那是在document.ready中的點擊事件之外。讓它在那裏導致迷你手推車在頁面加載時打開。除此之外,下拉圖標不會改變$ elem.addClass('mini_cart_less');,但我正在看。 – Judson

+0

如果您在$(document).ready中刪除了toggleMiniCart()的調用,我可以接受它。這會導致它在頁面加載時切換。謝謝。 – Judson

+0

@Judson根據請求刪除 –

相關問題