2016-08-01 7 views
0

クリックするとオーバーレイをトリガーしてドロップダウンメニューにフォーカスを当てる必要があるドロップダウンメニューがあります。 私は2つのドロップダウンメニューを持っているので、通常のtoggleClass()を使うことができないので、解決策を見つけて、オーバーレイが既に表示されているかどうかを調べるために条件を実行します。ドロップダウンメニューをクリックしてオーバーレイを表示

すべて正常ですが、 li.dropdown上のユーザーダブルクリックは、このソリューションはもう動作しない場合は、問題を抱えている:(私はli.dropdownにユーザーをダブルクリックした場合、上層を非表示にすることができますどのように

この私のコードは>https://codepen.io/mp1985/pen/KrBOdB

$('li.dropdown').click(function() { 
    if (!$('.full-overlayer').hasClass('show')){ 
     $(".full-overlayer").toggleClass("show"); 
    } 
}); 


$('.full-overlayer, .dropdown-menu a').click(function() { 
    $('.full-overlayer').removeClass('show'); 
}); 

これがこのタスクにアプローチする最良の解決策であるかどうかはわかりません。

提案やアドバイスはありますか?

+0

私はあなたが.click()の代わりに.one()を使用しようとするかもしれないと思います。 –

+0

この解決策を確認したら、それは助けになると思います。 https://jsfiddle.net/ishimdar/y4fpgyg4/5/ –

+0

これはありがたいですが、うまくいきません。最初のドロップダウンをクリックしてから2番目のドロップダウンをクリックすると、オーバーレイは表示されませんこれ以上は – mattia

答えて

0

WORKING CODEPEN - >https://codepen.io/anon/pen/grdgva]

$('li.dropdown').on('click',function() { 
    if (!$(this).hasClass('open')) 
    { 
     $(".full-overlayer").addClass("show"); 
    } else 
    { 
     $(".full-overlayer").removeClass("show"); 
    } 
}); 


$('.full-overlayer, .dropdown-menu a').click(function() { 
    $('.full-overlayer').removeClass('show'); 
}); 

多分それは多分私の作品解決策を見つけた...

+0

ありがとうございますが、うまくいきません。クリックすると(ドロップダウンを開きます)、ダブルクリックすると動作しないことがわかります。ここで試してみてくださいhttps://codepen.io/mp1985/pen/rLAXKE – mattia

+0

これで問題は解決するかもしれません - > https://codepen.io/anon/pen/grdgva – Nineoclick

+1

私の最後のコメントの内容で答えを修正しました。私の答えを考えたいありがとう、ハグ。 – Nineoclick

0

に役立ちます。 条件がチェックする場合、私は、これはクラス

if ($(this).hasClass('open')) { 
    $(".full-overlayer").removeClass("show"); 
    } 

を「開く」を持っている場合、私は今テストしていたが、それが仕事と思われる、または少なくとも私は誰かが将来のために必要がある場合は、ここ

がcodepenを願って別を追加しました>https://codepen.io/mp1985/pen/kXjOAN

関連する問題