1

ドロップダウン メガ メニューには、人気のある hoverIntent jQuery プラグインを使用しています。

http://cherne.net/brian/resources/jquery.hoverIntent.html

リストアイテムに添付しています:

$myMenuOfLIs
    .hoverIntent(megaConfig)

これは意図したとおりに機能します。マウスを LI の上に置くと、hoverIntent がトリガーされ、メニューが表示されます。

各 LI には、アンカー タグ (リンク) もあります。リンク(フォーカス)への個人タブを作成してから、メニューもトリガーできるようにしたいと思います。これは、キーボードを介してメニューを機能させるためです。

さまざまな設定を試しましたが、どれもうまくいかないようです:

$myMenuOfLIs
    .hoverIntent(megaConfig)
    .find('a:first')
        .hoverIntent(megaConfig)

 

$myMenuOfLIs
    .hoverIntent(megaConfig)
    .find('a:first')
        .hover()

そして、この混乱でさえ:

$myMenuOfLIs
    .hoverIntent(megaConfig)
    .find('a:first')
        .focus(function(){
            $(this).parent().hover(function(){
                $(this).hoverIntent(megaConfig)
            })
        })

キーボード/フォーカス イベントと一緒に hoverIntent を使用した人はいますか? 私の構文またはロジックは間違っていますか?

更新/解決策:

hoverIntent ロジックを掘り下げていたところ、それ自体がメニューを表示/非表示にする機能をトリガーしていることに気付きました。私の特定の問題の解決策は、別のイベントを介して hoverIntent をトリガーするのではなく、フォーカス イベントを介して hoverIntent が直接呼び出す関数を呼び出すことです。後から考えると明らかです。

4

1 に答える 1

0

キーボード イベント (keyUp、keyPress、または keyDown) をこれらの関連付けられた要素にバインドしましたか? このプラグインは使用していませんが、プラグインはホバー イベントを作成した要素にバインドするだけのようです。トリガーする要素にキーボード イベントを明示的にバインドする必要がある場合があります。キーボード イベントのハンドラーでは、ユーザーが押したキーがタブかどうかを確認する必要があります。また、何らかの方法で状態を保存する必要がある場合もあります (現在アクティブなメニューなど。ただし、それをプラグイン自体に委譲することはできますが、これまでにこのプラグインを使用したことがありません!)。

于 2010-02-03T19:57:26.717 に答える