2012-02-16 2 views
2

У меня есть раскрывающееся меню с возможностью выбора формы для количества. Выпадающее меню работает с JQuery hover. Таким образом, при наведении указателя меню появляется выпадающее меню, и когда вы его отключаете, он скрывается. Каждый раз, когда я пытаюсь изменить параметр выбора, он показывает остальную часть количества. Но когда я нахожусь на другом варианте или отключен от первого варианта выбора, все выпадающее меню скрывается.JQuery Issue With Form Select Drop Down Hiding

$("#navigation #seven").live({ 
    mouseenter:function(){ 
     $(this).find('ul').show(); 
    }, 
    mouseleave:function() { 
     $(this).find('ul').hide(); 
    } 
}); 
+0

Можете ли вы разместить некоторые детали, чтобы мы могли нарушить то, что происходит не так? –

ответ

1

Я предлагаю установить тайм-аут в режиме ожидания, скажем, пару сотен мс. В вашем меню установите флаг true, когда вы наводите на него курсор, и false, когда вы отключаетесь. Таким образом, если ваш значок значка вашего меню видит этот флаг как истинный, он не скрывает раскрывающееся меню.

Пример:

var overMenu = false; 
$(menuItem).hover(
    function() { 
     $(dropDownMenu).show(); 
    }, 
    function() { 
     setTimeout(function() { 
      if (!overMenu) 
       $(dropDownMenu).hide(); 
     }, 200); 
    } 
); 
$(dropDownMenu).hover(
    function() { overMenu = true; }, 
    function() { 
     overMenu = false; 
     $(this).hide(); 
    } 
}; 
+0

Вот мой код. Я пробовал то, что у вас было, но он не работал. Выбрасывает ошибки в Firefox. – user1211872

2

это происходит потому, что вы mouseouting По команде, когда вы пытаетесь добраться до выбора.

вы должны окружить пункт меню и избранный контейнером и применить парить на DIV

<div id="hoverable"> 
    <menuitem /> 
    <select style="display:none"><option></option></select> 
</div> 

, а затем применить парить к DIV

$('#hoverable').hover(function(){ 
    $(this).find('select').show(); 
}, function(){ 
    $(this).find('select').hide(); 
}); 
+0

Вот как это делается в настоящее время. – user1211872

0

получил его!

var hover_off = false; 
var hover_count = 1000; 

$("#navigation #seven").live("mouseover",function(){ 
    hover_off = false; 
    $(this).find('ul').show(); 
}); 

$("#navigation #seven").live("mouseout",function(){ 
    hover_off = true; 
    setTimeout(myMouseOut, hover_count); 
}); 

function myMouseOut() { 
    if (hover_off) { 
     $("#navigation #seven").find('ul').hide(); 
    } 
}