javascript - 调试意外的 jQuery mouseout 事件行为

标签 javascript jquery html css

我正在尝试在 jQuery 中创建一个菜单面板,除了一个问题外,一切都已完成。当我将鼠标悬停在一个链接上时,它会显示一个黑色面板,我希望仅当鼠标离开该黑色面板区域时才能隐藏该面板。目前,即使我在那个黑盒子里,它也会淡出。

这是脚本:

var link_rel = null;

$(function(){
  // hide all panels first
  $('div[id*="panel"]').hide();

  // make the panels absolute positioned
  $('div[id*="panel"]').css('position', 'absolute');


  // setup each element ...
  $('#menu a').each(function(){
    var link_rel = $(this).attr('rel');
    var pos = $(this).offset();

    // get the panel near by hovered element now
    $('div#' + link_rel).css({
      'left': pos.left + 'px',
      'top': pos.top + 'px',
      'zIndex': '99'
    });
    $('div#' + link_rel).hover(function(){},
                               function(){$(this).fadeOut('slow');});
    $(this).hover(function(){
      // set z-index of previous panels low
      $('div[id*="panel"]').css('z-index', '0');

      // get the panel near by hovered element now
      $('div#' + link_rel).css({
        'left': pos.left + 'px',
        'top': pos.top + 'px',
        'zIndex': '99'
      });
      $('div#' + link_rel).fadeIn('slow');
    },
    function(){
     $('div#'+link_rel).css('z-index', '0');
     });
    $('div#' + link_rel).hover(function(){$(this).fadeIn('slow');},
                               function(){$(this).fadeOut('slow');});
  });

});

您可以通过单击此处的预览 链接查看预览并在那里进行编辑:

http://jsbin.com/adofe/edit

我是 jQuery 新手。

最佳答案

当您只提供一个悬停参数时,它会将其用于鼠标进入和鼠标离开。

您应该使用 hover 而不是 mouseout 事件。

在您第一次调用 hover 时,提供一个空白选项作为第二个参数。

在第二次调用 hover 时,提供一个空白函数作为第一个参数。

这可以防止多次调用同一函数。

我会说使用 mouseenter 和 mouseleave 事件来防止额外的参数,但由于某些原因 jsbin 不认为它是一个函数。

http://jsbin.com/adofe/6/edit

关于javascript - 调试意外的 jQuery mouseout 事件行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2387147/

相关文章:

css - 在 css 中为图像添加边框时出现问题

javascript - 加载集线器时出错。 HTML5/js 前端和 C# 后端

javascript - 在 CycleJS 中使用输入字段值作为 HTTP 请求数据的一部分

javascript - Node 从 req.params.id 结果中取出数组

javascript - 当 JavaScript 动态添加行时,单选按钮功能无法正常工作

javascript - 单击单选按钮,隐藏 div

javascript - 如何使多个 JavaScript 函数的输出以 HTML 形式显示?

c# - 如何使用 Gekofx 将参数从 C# 按值传递到 javascript 函数

javascript - 类型错误 : Cannot read property 'value' of null

javascript - 如何在 Canvas 中的形状后面留下痕迹?