2011-11-02 34 views
2

㈣創建了一個基本垂直滑動菜單,在這裏可以看到左邊的垂直灰色條上:jQuery的菜單中使用的slideToggle()輕微的問題

http://www.switchcreative.co.uk/tuckagefinewines/

當你點擊一個國家的子菜單項向下滑動,頂層+符號變爲 - 但當菜單再次關閉時,如何將其更改回+。我想我想添加一個甚至滑動向上的議案?但不知道如何。 if語句我試圖用改變它,但不能讓它在這裏工作是我最親密的版本,工作編號方式,如:

function initMenu() { 
$('#menu ul:not(.active)').hide(); 
$('#menu li a.top_a').click(
function(e) { 
    e.preventDefault(); 
    $(this).next().slideToggle('normal'); 
    $(this).siblings('.plus').replaceWith(' - '); 
    } 
); 
} 

回答

1

您要移除span.plus嘗試設置這樣的文字:

if($(this).siblings('.plus').text() == '+') 
    $(this).siblings('.plus').text('-'); 
else 
    $(this).siblings('.plus').text('+'); 
+0

啊我幾乎在那裏。這很有用,謝謝 – user794846

0

你可以檢查每一個子元素的CSS高度。如果它大於0,那麼.plus元素應該再次用「+」替代。 slideToggle()除了改變en元素的高度外別無其他。你可以閱讀一下here

0

改變這一行:

$(this).siblings('.plus').replaceWith(' - '); 

到:

if($(this).siblings('.plus').length > 0){ 
    $(this).siblings('.plus').removeClass('.plus').addClass('.minus').text(' - '); 
} 
else { 
    $(this).siblings('.minus').removeClass('.minus').addClass('.plus').text(' + '); 
} 

甚至有兩個跨度:

<span class="plus"> + </span><span class="minus"> - </span> 

.plus是可見的,.minusdisplay: none;。然後當你切換下一個元素只是做:

$(this).siblings('.plus, .minus').toggle(); 
+0

酷也是一個好方法。 – user794846