悬停问题Jquery库

悬停问题Jquery库,jquery,html,css,Jquery,Html,Css,我有一个关于悬停函数的问题。我有一个例子: $('.窗帘')。悬停(函数(){ var$container=$(this.closest('div.container'); $container.find('.containerLeft').addClass('lefthover'); $container.find('.containerRight').addClass('righthover'); },函数(){ var$container=$(this.closest('div.cont

我有一个关于悬停函数的问题。我有一个例子:

$('.窗帘')。悬停(函数(){
var$container=$(this.closest('div.container');
$container.find('.containerLeft').addClass('lefthover');
$container.find('.containerRight').addClass('righthover');
},函数(){
var$container=$(this.closest('div.container');
$container.find('.containerLeft').removeClass('lefthover');
$container.find('.containerRight').removeClass('righthover');
});
.lefthover{
边框:2倍纯绿;
}
.右悬停{
边框:2倍纯色橙色;
}

用此代码替换jQuery代码并检查

$('.curtain').hover(function() {
  var $container = $(this).parent('.container');
  $container.children('.containerLeft').addClass('lefthover');
  $container.children('.containerRight').addClass('righthover');
}, function() {
  var $container = $(this).parent('div.container');
  $container.children('.containerLeft').removeClass('lefthover');
  $container.children('.containerRight').removeClass('righthover');
});

我希望您能得到答案,您可以在

上检查,用这个替换jQuery代码并检查

$('.curtain').hover(function() {
  var $container = $(this).parent('.container');
  $container.children('.containerLeft').addClass('lefthover');
  $container.children('.containerRight').addClass('righthover');
}, function() {
  var $container = $(this).parent('div.container');
  $container.children('.containerLeft').removeClass('lefthover');
  $container.children('.containerRight').removeClass('righthover');
});

我希望您能得到答案,您可以在

上查看。之所以会出现这种情况,是因为b/c悬停功能启动得如此之快,主要是在使用
mouseenter
mouseleave
时,这就是jquery的
悬停功能的原因

我一直使用这个插件,名为hoverIntent。你可以找到它。基本上,这个插件所做的就是计算像素(从鼠标移动到“区域”时开始,如果鼠标在一段时间内移出该区域)。这些计算将阻止事件(悬停)多次触发,并且仅在用户实际悬停预定时间(取决于您传入的选项)时才会触发。所有这些选项都可以更改并传递到插件的init中

这已经过时好几年了,为我节省了很多时间。我极力推荐

以下是使用hoverIntent的示例:

$('.container').hoverIntent({
    selector: '.curtain',   // this is the same as using jquery's `on` event
    sensitivity: 2,  // or w/e number - read docs
    interval: 50, // default is 100
    over: function () {
       var $container = $(this).closest('div.container');
       $container.find('.containerLeft').addClass('lefthover');
       $container.find('.containerRight').addClass('righthover');
    },
    out: function() {
      var $container = $(this).closest('div.container');
      $container.find('.containerLeft').removeClass('lefthover');
      $container.find('.containerRight').removeClass('righthover');
    }
});

发生这种情况的原因是b/c悬停函数启动得太快,主要是在使用
mouseenter
mouseleave
时,这就是jquery的
悬停
函数的原因

我一直使用这个插件,名为hoverIntent。你可以找到它。基本上,这个插件所做的就是计算像素(从鼠标移动到“区域”时开始,如果鼠标在一段时间内移出该区域)。这些计算将阻止事件(悬停)多次触发,并且仅在用户实际悬停预定时间(取决于您传入的选项)时才会触发。所有这些选项都可以更改并传递到插件的init中

这已经过时好几年了,为我节省了很多时间。我极力推荐

以下是使用hoverIntent的示例:

$('.container').hoverIntent({
    selector: '.curtain',   // this is the same as using jquery's `on` event
    sensitivity: 2,  // or w/e number - read docs
    interval: 50, // default is 100
    over: function () {
       var $container = $(this).closest('div.container');
       $container.find('.containerLeft').addClass('lefthover');
       $container.find('.containerRight').addClass('righthover');
    },
    out: function() {
      var $container = $(this).closest('div.container');
      $container.find('.containerLeft').removeClass('lefthover');
      $container.find('.containerRight').removeClass('righthover');
    }
});

您所说的多次自动添加的
是什么意思?
?jQuery不会多次向DOM添加相同的类。我认为2px宽度的边框会导致mouseenter和mouseleave多次运行,因为效果区域已扩展。请看这种行为,当我将鼠标悬停在建筑$(“#图像映射MetroOffice区域”)。每个(函数(){var idFloor=$(this).attr('href').substring(0,2);$(this.mouseover)(函数(){$(“#floor”+idFloor).addClass('hoverfl');}).mouseout(函数(){$(“#floor”+idFloor.removeClass('hoverfl');})})“
自动添加多次是什么意思”
?jQuery不会多次将同一类添加到DOM中。我认为2px宽度的边框会导致mouseenter和mouseleave多次运行,因为效果区域已扩展。当我将鼠标悬停在建筑$(“#图像映射到办公区域”)。每个(函数(){var idFloor=$(this).attr('href').substring(0,2);$(this).mouseover(函数(){$(“#floor”+idFloor).addClass('hoverfl');}).mouseout(函数(){$(“#floor”+idFloor.removeClass('hoverfl');});