jQuery滚动到禁用<;a>;论动画

jQuery滚动到禁用<;a>;论动画,jquery,scrollto,Jquery,Scrollto,我正在使用Ariel Flesler的ScrollTo jQuery插件。一切都很好,除了滚动时,动画会将光标拖动到一些链接上,这些链接具有:hover触发器,会导致动画中的暂时挂起。有没有可能有人知道如何在动画发生时禁用元素:hover函数?当你说链接有“:hover触发器”时,你是说你定义了CSS:hover规则还是说你已经将JavaScript函数绑定到了hover事件 如果是CSS,您设置了哪些属性导致挂起(我无法通过简单的字体大小更改在我的机器上复制挂起)。就我所知,你不能阻止CSS:

我正在使用Ariel Flesler的ScrollTo jQuery插件。一切都很好,除了滚动时,动画会将光标拖动到一些链接上,这些链接具有:hover触发器,会导致动画中的暂时挂起。有没有可能有人知道如何在动画发生时禁用元素:hover函数?

当你说链接有“:hover触发器”时,你是说你定义了CSS:hover规则还是说你已经将JavaScript函数绑定到了hover事件

如果是CSS,您设置了哪些属性导致挂起(我无法通过简单的字体大小更改在我的机器上复制挂起)。就我所知,你不能阻止CSS:hover

如果是JavaScript,那么在调用scrollTo之前,您就不能解除事件绑定吗

再详细一点或者举个例子会很有用

编辑:

好的,作为对您的评论的回应,基本上您必须在使用
滚动到
之前
解除绑定
mouseenter
mouseleave
事件:

$(...).unbind('mouseenter mouseleave');
演示 在Firebug中访问并运行以下代码

然后,您可以单击“测试滚动”链接来测试代码。您应该看到,当鼠标悬停在其余链接上时,浏览器不会挂起

当滚动停止时,您可以单击任何“返回”链接,它将向后滚动,但这次不会解除悬停事件的绑定,因此您应该挂起浏览器

注意:我根本没有被绞死的经历。您使用的是速度较慢的计算机还是较旧版本的jquery?让我知道演示是否按预期工作

/*
  Inject some CSS to add a background to the elements we
  are going to hover over and increase the font-size to 
  make the hover area bigger.
*/
$('head').append('<style type="text/css"> .back { font-size:3em!important; background-image:url(http://imgs.xkcd.com/comics/useless.jpg); background-repeat:no-repeat; } </style>');

/*
  Setup the hover events -- change the backgroundPosition
  and fade the elements in and out.
*/
function hoverOn() {    
  $(this)
    .css('backgroundPosition','-95px -210px')
    .fadeTo('normal', 1);
}

function hoverOff(){
  $(this)
    .css('backgroundPosition','-260px -110px')
    .fadeTo('normal', 0.5);
}

// Set the default opacity and bind the hover events
$('.back').not('#pane-target a:first')
  .css('opacity', 0.5)
  .hover(hoverOn, hoverOff);

// Modify the first link so that we can use it to trigger the scroll.
$('#pane-target a').eq(0)
  .css('backgroundImage', 'none') // Remove the backgroundImage for clarity
  .unbind('click') // unbind the old "go back" behaviour
  .text('test scroll')
  .click(function(){ 

    // unbind the hover events so that they don't hang the browser
    $('.back').not('#pane-target a:first')
      .unbind('mouseenter mouseleave');

    $('#pane-target').scrollTo(
      'li:eq(5)',
      800,
      {onAfter:function(){
        // re-bind the hover events
        $('.back').not('#pane-target a:first').hover(hoverOn, hoverOff);
      }}
    );

    return false;
  });
/*
注入一些CSS,为我们需要的元素添加背景
将鼠标悬停在上方,并将字体大小增加到
使悬停区域变大。
*/
$('head').append('.back{font size:3em!重要;背景图像:url(http://imgs.xkcd.com/comics/useless.jpg);背景重复:无重复;}');
/*
设置悬停事件--更改背景位置
淡入淡出元素。
*/
函数hoverOn(){
$(本)
.css('backgroundPosition','-95px-210px')
.fadeTo(“正常”,1);
}
函数hoverOff(){
$(本)
.css('backgroundPosition','-260px-110px')
.fadeTo(正常值),0.5;
}
//设置默认不透明度并绑定悬停事件
$('.back')。而不是('#窗格目标a:first'))
.css(“不透明度”,0.5)
.悬停(悬停打开,悬停关闭);
//修改第一个链接,以便我们可以使用它触发滚动。
$(“#窗格目标a”).eq(0)
.css('backgroundImage','none')//为清晰起见,请删除背景图像
.unbind('click')//取消绑定旧的“返回”行为
.text('测试卷轴')
。单击(函数(){
//解除悬停事件的绑定,使其不会挂起浏览器
$('.back')。而不是('#窗格目标a:first'))
.unbind(“mouseenter mouseleave”);
$(“#窗格目标”)。滚动到(
‘李:等式(5)’,
800,
{onAfter:function(){
//重新绑定悬停事件
$('.back')。非('#窗格目标a:first')。悬停(悬停ON,悬停OFF);
}}
);
返回false;
});

Ah,不,这是用jQuery.hover.fadeTo完成的背景位置转换。。。我对javascript非常陌生,我如何在滚动动画期间解除其他动画的绑定?非常感谢。这是有道理的。我最近注意到我的浏览器中出现了一些问题,所以我认为可能是动画迟疑,而不是:悬停导致了问题,尽管如此,我还是注意到了这一点,以备将来使用,我认为这对社区有帮助!