から特定の css クラスを削除して、.nav
適切に表示されるようにする必要があります。現在、さまざまな画面サイズに基づくと、その動作は予想外です。
フィドルの例
ドロップダウン サブメニューが正しく表示されないことに気付くでしょう。ドロップダウンの右側に十分なスペースがある場合はドロップダウンの右側に、<div class="main-wrapper">
幅が 1000px の幅に基づいてスペースが少ない場合はドロップダウンの左側にドロップダウンを表示します。
次のコードで修正しようとしましたが、正しく動作しません。
$(document).ready(function(){
$(".nav").on("mouseenter", " > li", function(){
/*if dropdown is likely to go out of parent nav then right align it :) */
if (($(this).offset().left) + 200 > $('.menu-wrapper').width()) {
$(this).find(".dropdown").addClass("dropdown-last");
}
if($(this).hasClass("has-panel")){
// $(this).find(".dropdown").removeClass("dropdown-last");
//alert('has class');
}
else
{
//alert('has no class');
}
});
/* if dropdnw*/
$(".dropdown").each(function(){
var $this = $(this);
if($this.find(".dd-panel").length > 0){
$this.addClass('has-panel');
}
if($this.find(".dd-panel").length = 1){
$(".dropdown").css( "min-height", "80px" );
}
});
});
デバッグ時に、divにクラスがあり、メガ メニューがdropdown has-panel dropdown-last
ない場合は div クラスとして次のように表示されます。要素にクラスがあるかどうかを確認するために、jQueryを使用して確認しようとしていました。class がある場合は何もせず、 class がない場合は、次のコードでは機能しない同じ要素からクラスを削除する必要があります。has-panel
dropdown dropdown-last
has-panel
has-panel
dropdown-last
if($(this).hasClass("has-panel")){
// $(this).find(".dropdown").removeClass("dropdown-last");
alert('has class');
}
else
{
//alert('has no class');
}