2016-03-15 22 views
0

我正在建立一個點擊下拉菜單。當鏈接被點擊時,下拉菜單下降,當除了dropmenu之外的任何東西被觸摸時,dropmenu滑回。剩下的唯一一件事就是讓鏈接再次點擊時使dropmenu向上滑動。我已經添加了一個.act類的鏈接,以便我可以從其他鏈接單獨出來(這樣我可以在點擊時隱藏它),但jquery不讀這個添加的類。這是我的代碼。Jquery沒有閱讀動態添加的類

function headerNav() { 
    $('header nav a').bind('click', function(e) { 
     e.preventDefault(); 
    }); 

    // change 
    $('header nav a').on('click', function() { 
     changeNavCont($(this)); 
    }); 

    //show 
    $('header nav a').on('click', function() { 
    $('.dropDownMenu').addClass('show'); 
    $(this).addClass('act'); 
    }); 

    //hide 
$('header nav a.act').on('click', function() { 
     $('.dropDownMenu').removeClass('show'); 
     $('header nav a').removeClass('act'); 
}); 

    $(document).on('click', function(e) { 
    if (($(e.target).closest('header nav').length === 0)) { 
     $('.dropDownMenu').removeClass('show'); 
     $('header nav a').removeClass('act'); 
    } 
    }); 
} 

function changeNavCont($this) { 

    $('header nav a').removeClass('act'); 
    $this.addClass('act'); 
    var show = $this.attr('href'); 
    $('.dropDownMenu article').removeClass('show'); 
    $('.dropDownMenu article.' + show).addClass('show'); 

} 
+0

這是一個爛攤子,應該更像 - > https://jsfiddle.net/o4o5yave/ – adeneo

回答

1

您在show函數中使用$this,但$ this在該函數中未定義。它看起來像你應該使用$(this)使其:

//show 
$('header nav a').on('click', function() { 
    $('.dropDownMenu').addClass('show'); 
    $(this).addClass('act'); 
}); 
+0

嘿,謝謝你的回答。很好地捕捉$(this),但Jquery仍然沒有選擇添加的.act類。我更新了上述代碼並添加了隱藏函數im,用於在單擊.act類的鏈接時隱藏下拉列表。 – Erik

+0

你可以使用jsfiddle.net上的html製作小提琴嗎? –

+0

目前還不行,但病態的工作,並回到你身邊。感謝您的幫助 – Erik