2010-06-16 57 views
5

我有另一个问题,并且因为答复是在这里速度很快,我再次回来!jquery效果问题:如何检测scrollover是否触发了mouseover?

我想用“键导航”,并为此,我使用按键事件与向下/向上键)

当我的鼠标在DIV(DIV谁的contenaing一大桌)和我拉向下键:

我滚动到下一个TD +改变CSS样式+

并再次删除当前的风格,为每个事件..

所以,因为我的鼠标在主格,每个当我滚动(自动)到一个元素时,mouseover事件触发红..

所以,效果错过..

这是一个完美的脚本:

  • 用户使用键盘导航:鼠标悬停被禁用(所以风格上的变化只与上/下键)
  • 用户不使用键盘:鼠标悬停改变风格

你能帮助我吗?

代码:

$("#content tr").mouseover(function() { 
    $("#content tr.use,#content tr.sel").removeClass("use sel"); 
    $(this).addClass("sel"); 
}); 

而且键盘导航代码:http://pastebin.com/Hgn5Y1FV

(对不起再次,我的英语。)

感谢

+0

我真的不明白问题在这里。 – jAndy 2010-06-16 12:19:47

+0

当我滚动时触发鼠标悬停.. 当我用键盘导航滚动时,我添加对元素的影响。 效果被禁用,因为elemen.mouseover也被触发.. – Crupuk 2010-06-16 12:43:47

回答

0

试试这个。每当您(从箭头键)开始滚动时,让它将标志设置为true,当滚动停止时,将标志设置为false。

var keyboardScroll = false; // Set to true when keyboard scroll begins 
          //  and false when keyboard scroll ends 

然后让mouseover代码只在keyboardScroll为false时才运行;

$("#content tr").mouseover(function() { 

    if(!keyboardScroll) { // Run code only if keyboard scroll is not true 
     $("#content tr.use,#content tr.sel").removeClass("use sel"); 
     $(this).addClass("sel"); 
    } 

}); 
+0

我已经试试这个.. 他们不工作,因为scrollTo插件设置keyboardScroll = false为滚动结束..所以,mouseover触发.. :-( – Crupuk 2010-06-16 12:30:48

+0

@Crupuk - 我现在看到你有'keyNav'变量,奇怪的是它不工作,插件文档声明'onAfter'在动画完成后运行 – user113716 2010-06-16 12:38:00

+0

看这个代码: ('#='+'(“#”+ id).outerHeight(true)+'px')('#content tr')。('#content tr')。unbind('mouseover'); $ ,{'onAfter':function(){alert(“rebind”); $('#content tr')。bind('mouseover');}}); 解除绑定事件,但不绑定.. 也许,这是因为#content> table> tr是用ajax动态添加的。因此,鼠标悬停是在ajax成功方法中定义的,并且该绑定是在外部调用的,因为按键设置在“文档”上,并且不需要放置在ajax中(这不是简单的...:-s - - >对不起) – Crupuk 2010-06-16 12:59:40