只覆盖箭头键滚动事件
override just the arrowkey scroll event
所以我正在创建一个自定义滚动框,因为标准的html<select>框没有剪切它(我需要显示两列,但找不到如何使用<select>)。无论如何,我有一个可滚动的表,它正按照我想要的方式工作。除了上下箭头键触发整体滚动,而不是选择表中的前一个或前一个元素。
html<使用适当的上下绑定选择>http://jsfiddle.net/a5YJK/
我的自定义选择没有适当的上下http://jsfiddle.net/8zgxA/3/
当我运行时
$('#wrap *').scroll(function(e){});
我无法区分鼠标滚动和向上或向下箭头。如何区分?
只需检查滚动事件中不存在的e.keyCode
或e.which
。
$(window).on('keyup scroll', function(e){
console.log(e.keyCode); //undefined for mouse scroll
if(e.keyCode && e.keyCode == 40){
//down arrow, scroll might occur, so prevent it or do whatever
}
});
演示
<table onfocus="focused(1)" onblur="focused(0)" onkeypress="selectnext(event)">
.
.
.
</table>
<script type="text/javascript">
var currentrow = 0;
var tablefocused;
function focused(a)
{
switch(a)
{
case 1:
tablefocused = 1;
break;
case 0:
tablefocused = 0;
break;
}
}
function selectnext(e)
e.stopPropagation();
{
if(tablefocused==1)
{
switch(e.keyCode)
{
case 38:
currentrow = currentrow-1;
this.childNodes[currentrow].style.backgroundColor = "blue";
$('tr').css('background', '');
break;
case 40:
currentrow = currentrow+1;
this.childNodes[currentrow].style.backgroundColor = "blue";
$('tr').css('background', '');
break;
}
}
}
</script>
我在这段代码中遗漏了一些细节,例如"currentrow"不应该转到-1,单击一行应该将currentrow的值更改为该行,例如
哦,为了防止滚动,您可以使用stopPropagation()函数来防止事件冒泡。
相关文章:
- 只覆盖箭头键滚动事件
- Javascript如何找到滚动事件的来源
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- jquery/ajax无限滚动事件
- 如何检测滚动事件是否像在触摸设备上一样只触发一次
- 为什么不'我的窗口滚动事件根本没有启动.其他答案没有解决问题
- 如何用javascript调用函数,然后在滚动事件中调用该函数的特定实例
- 从父元素取消绑定滚动事件并绑定到子元素
- JavaScript/jQuery未触发滚动事件
- 如何使用javascript检测不可滚动元素中的滚动事件和方向
- AngularJS窗口滚动事件未触发
- 正在阻止滚动事件
- JavaScript 事件处理具有延迟的滚动事件
- 在画布上创建滚动事件
- 如何由于浏览器的平滑滚动而忽略大量滚动事件
- onclick滚动事件-语法
- 带有滚动事件的Javascript集翻译速度较慢
- 在firefox上的滚动事件中移动元素
- 鼠标滚轮事件和滚动事件相互冲突
- 滚动事件运行缓慢-有没有更轻松的方法