2012-03-29 6 views
2

画像は1000の言葉を述べています。または、別のドロップキックメニューを選択すると、前/他の開いているメニューが自動的に閉じます。jQueryのドロップキック:ドロップキックメニューにフォーカスが失われたとき<a href="http://d.pr/ZeBI" rel="nofollow">http://d.pr/ZeBI</a>が</p> <p>基本的には他のほとんどのブラウザでは、それが閉じ:ドロップダウンではない自動閉鎖

ただし、これは発生しません。それらをすべて開くことができ、それらを閉じるには、何かを選択するか、もう一度クリックする必要があります。

アイデア?

ありがとうございました!

+0

誰もが複数の幅の問題を修正する方法を知っていますか? http://stackoverflow.com/questions/11769888/how-to-individually-target-multiple-dropdowns-in-css-for-dropkick-plug-in – user1318135

答えて

7

私は、それがコードの変更:

// Focus events 
     $dk.bind('focus.dropkick', function (e) { 
     $dk.addClass('dk_focus'); 
     }).bind('blur.dropkick', function (e) { 
     $dk.removeClass('dk_open dk_focus'); 
     }); 

入れ:

if($.browser.webkit) { 

     $('html').click(function() { 
      $dk.removeClass('dk_open dk_focus'); 

    }); 
     $dk.click(function(event){ 
      $dk.addClass('dk_focus'); 

     }); 


    }else{ 

     // Focus events 
     $dk.live('focus', function() { 
      $dk.addClass('dk_focus'); 
     }).live('blur', function() { 
      $dk.removeClass('dk_open dk_focus'); 
     }); 
    } 

、それが正常に動作します。

+1

私は 'on'の方法ではなく、ためにOPED '生きる '。また、私の場合、 '$( 'html、body')'が働いていたのに対し、 '$( 'html')'は行3の別のセレクタを使いました。 –

5

私は同じ問題を抱えていました。私の友人は、 "select"タグに "tabindex"属性を追加すると、dropkickが適切に動作することを発見しました。

これは動作しません。

<select name="test"> 
<option val="1">a</option> 
</select> 

これは動作します:

<select name="test" tabindex="1"> 
<option val="1">a</option> 
</select> 
+1

これは私のためにも機能し、プラグインを修正するのが好ましいです - ありがとう! – ollie

+0

+1。ここでもうまくいきました。プラグインを変更するのではなく、プラグインを修正するより良い方法です。乾杯! – Fraser

1

ウェブのためだけでなく、モバイル用のWebKitのブラウザでドロップキックに関連開始し、多くの問題がありました。

はここ

// Focus events 
     if($.browser.webkit) { 

       $('html').click(function() { 
        $dk.removeClass('dk_open dk_focus'); 

      }); 

      $dk.click(function(event){ 
        $dk.addClass('dk_focus'); 

       }); 
       $('.dk_toggle').click(function(){ 
       var elements__ = $(this).parent('div'); 
        if(elements__.hasClass('dk_open')){ 
         _closeDropdown($dk); 
         return false; 
        } 
      }); 



      } 
      else{ 

       // Focus events 
       $dk.live('focus', function() { 
        $dk.addClass('dk_focus'); 
       }).live('blur', function() { 
        $dk.removeClass('dk_open dk_focus'); 
       }); 
      } 

ハッピーコーディング

次のコードの完全な作品は、ドロップキック

// Focus events $dk.bind('focus.dropkick', function (e) { $dk.addClass('dk_focus'); }).bind('blur.dropkick', function (e) { $dk.removeClass('dk_open dk_focus'); });

に次のコードを見つけて、でそれを置き換えるです!

1

は、ここで私が見つけたことをさらに容易に修正、https://github.com/JamieLottering/DropKick/issues/45

あなただけのほとんどのバージョンではライン363で開始.dk_toggle(の「ライブ」「」クリックイベントにコードの1行を追加する必要があり

の礼儀です):

$('.dk_open').removeClass('dk_open'); 

最終方法は次のとおりです。

// Handle click events on the dropdown toggler 
$('.dk_toggle').live('click', function (e) { 
    $('.dk_open').removeClass('dk_open'); 
    var $dk = $(this).parents('.dk_container').first(); 
    _openDropdown($dk); 
    if ("ontouchstart" in window) { 
    $dk.addClass('dk_touch'); 
    $dk.find('.dk_options_inner').addClass('scrollable vertical'); 
    } 
    e.preventDefault(); 
    return false; 
}); 
関連する問題

 関連する問題