1
私はマウスオーバーでクリックしたときにドロップダウンオプションを構築しようとしています。私がそれを持っている唯一の問題は、マウスを子要素の上に置くと、メニューがすばやく隠れてしまうことです。ドロップダウンオプションがjQueryで動作しない
のjQueryコード:
var navPos = $("#topNav").position().top; // ignore this line
// menu drop options
$('.repeat, .recitor, .volume, .bandwidthOption').bind('dropOption', function(e, force) {
var force = force || 'toggle';
if ($(this).hasClass('repeat'))
var optionName = 'repeat';
else if ($(this).hasClass('recitor'))
var optionName = 'recitor';
else if ($(this).hasClass('volume'))
var optionName = 'volume';
else if ($(this).hasClass('bandwidthOption'))
var optionName = 'bandwidthOption';
else
return;
var optionSubName = $(this).find('ul').attr('class');
var position = $(this).position();
position.top = navPos;
var isActive = $(this).hasClass('active');
if ((isActive && force != 'show') || (force && force == 'hide'))
{
$(this).removeClass('active');
$('.'+optionSubName).hide();
if (optionName == 'recitor') /* ie fix - z-index issue */
$('.logoBox').show();
}
else
{
$(this).addClass('active');
$('.'+optionSubName).show();
$('.'+optionSubName).css('left',position.left+'px');
if (optionName == 'recitor') /* ie fix - z-index issue */
$('.logoBox').hide();
}
});
$('.repeat, .recitor').click(function() {
$(this).trigger('dropOption');
return false;
});
$('.volume, .bandwidthOption').hover(function() {
$(this).trigger('dropOption', 'show');
},function() {
$(this).trigger('dropOption', 'hide');
});
メニューデモ:http://jsbin.com/ozokir/2
デモhttp://jsbin.com/ozokir/3 – Basit
である私はあなたを考えます私は誤解しています。 mouseover/mouseoutはホバーとほとんど同じことをします。表示にはマウスオーバーを使用し、オプションを隠すためのオプションとしてmouseoutイベントを使用してください。 – Candide
oh ok。しかし、それは適切ではありません。私はちょうどそれを試したので、あなたがkbsからマウスを離さないなら、それは隠されません。それを試してみてください。 http://jsbin.com/ozokir/5/edit#preview – Basit