1

これがコードです。li項目にカーソルを合わせると、タブがアニメーション化され、入力フィールドを含む同じ幅270pxのドロップダウンが同時に開きますが、マウスをdivから移動するか、オプションリストから何かを選択しようとすると、ドロップダウンが閉じます.この問題の遅延またはその他の解決策が必要ですdivdropdown

$(function() {
            /**
             * the menu
             */
            var $menu = $('#ldd_menu');

            /**
             * for each list element,
             * we show the submenu when hovering and
             * expand the span element (title) to 270px
             */
            $menu.children('li').each(function(){
                var $this = $(this);
                var $span = $this.children('span');
                $span.data('width',$span.width());

                $this.bind('mouseenter',function(){
                    $menu.find('.ldd_submenu').stop(true,true).hide();
                    $span.stop().animate({'width':'270px'},300,function(){
                        $this.find('.ldd_submenu').slideDown(300);
                    });
                }).bind('mouseleave',function(){
                    $this.find('.ldd_submenu').stop(true,true).hide();

                    $span.stop().animate({'width':$span.data('width')+'px'},300);
                });
            });
        });
4

2 に答える 2

0

jQueryでは完全にはわかりませんが、JavaScriptでアイテムをクリックするとフォーカスが与えられ、他の場所をクリックするまでフォーカスが保持されるため、フォーカスが失われたかどうかをテストします(mouseenter/mouseleaveチェックでマウスが項目の上に置かれています)。

タイマーは実際にはこれを行う方法ではありません。なぜなら、人によってメニューのオプションを他の人よりも長く考える可能性があり、それを行う自由を彼らに与えたいからです.

于 2012-09-09T11:29:47.863 に答える
0

追加してみてくださいdelay()

....bind('mouseleave',function(){
         $this.find('.ldd_submenu').delay(300).stop(true,true).hide();
         $span.delay(300).stop().animate({'width':$span.data('width')+'px'},300);
       });
于 2012-09-09T11:31:06.057 に答える