jQuery滚动到禁用<;a>;论动画
我正在使用Ariel Flesler的ScrollTo jQuery插件。一切都很好,除了滚动时,动画会将光标拖动到一些链接上,这些链接具有:hover触发器,会导致动画中的暂时挂起。有没有可能有人知道如何在动画发生时禁用元素:hover函数?当你说链接有“:hover触发器”时,你是说你定义了CSS:hover规则还是说你已经将JavaScript函数绑定到了hover事件 如果是CSS,您设置了哪些属性导致挂起(我无法通过简单的字体大小更改在我的机器上复制挂起)。就我所知,你不能阻止CSS:hover 如果是JavaScript,那么在调用scrollTo之前,您就不能解除事件绑定吗 再详细一点或者举个例子会很有用 编辑: 好的,作为对您的评论的回应,基本上您必须在使用jQuery滚动到禁用<;a>;论动画,jquery,scrollto,Jquery,Scrollto,我正在使用Ariel Flesler的ScrollTo jQuery插件。一切都很好,除了滚动时,动画会将光标拖动到一些链接上,这些链接具有:hover触发器,会导致动画中的暂时挂起。有没有可能有人知道如何在动画发生时禁用元素:hover函数?当你说链接有“:hover触发器”时,你是说你定义了CSS:hover规则还是说你已经将JavaScript函数绑定到了hover事件 如果是CSS,您设置了哪些属性导致挂起(我无法通过简单的字体大小更改在我的机器上复制挂起)。就我所知,你不能阻止CSS:
滚动到之前解除绑定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非常陌生,我如何在滚动动画期间解除其他动画的绑定?非常感谢。这是有道理的。我最近注意到我的浏览器中出现了一些问题,所以我认为可能是动画迟疑,而不是:悬停导致了问题,尽管如此,我还是注意到了这一点,以备将来使用,我认为这对社区有帮助!