求教一个jquery的按键事件

区块链自由 2016-11-21 11:35:54
页面结构
<div class="title">标题1</title>
<div class="title">标题2</title>
<div class="title">标题3</title>
<div class="title">标题4</title>
.........


想要达到的效果:一直按着Ctrl键,点击.title元素,可以给这个元素添加active样式。释放Ctrl键,再点击title元素则不会再添加active样式。代码如下:


var ctrl = true;
// 按下Ctrl键
$(document).keydown(function(e){
if(e.which == 17) { // 表示按下的是Ctrl键
if (ctrl){
$('.title').click(function(){
$(this).addClass('active');
});
}
}
});

// 释放Ctrl键
$(document).keyup(function(e){
if(e.which == 17){ // 表示释放的是Ctrl键
ctrl = false;
}
});

---------------------------------------------
但实际运行的结果是:按着Ctrl键,点击title元素确实可以添加active样式,但是释放Ctrl键之后,再点击依旧可以给title元素添加active样式.....求教究竟代码哪里出了错误........谢谢!


..
...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
区块链自由 2016-11-23
  • 打赏
  • 举报
回复
引用 1 楼 qq_29594393 的回复:

var ctrl = false;
// 按下Ctrl键 
$(document).keydown(function(e){
        if(e.which == 17) {   // 表示按下的是Ctrl键
             ctrl=true;
         }
  });

// 释放Ctrl键
$(document).keyup(function(e){
        if(e.which == 17){   // 表示释放的是Ctrl键
            ctrl = false;
        }
 });
 
 $('.title').click(function(){
    if(ctrl)
    $(this).addClass('active');
});
谢谢大侠!您总是能完美的解决我的问题
天际的海浪 2016-11-22
  • 打赏
  • 举报
回复
你代码逻辑性不对

var ctrl = false;
// 按下Ctrl键 
$(document).keydown(function(e){
        if(e.which == 17) {   // 表示按下的是Ctrl键
            ctrl = true;
        }
});

// 释放Ctrl键
$(document).keyup(function(e){
        if(e.which == 17){   // 表示释放的是Ctrl键
            ctrl = false;
        }
 });

$('.title').click(function(){
	if (ctrl)
		$(this).addClass('active');
});

bluedrink 2016-11-22
  • 打赏
  • 举报
回复
其实也可以在松开ctrl的时候去掉click事件
qq_20836357 2016-11-21
  • 打赏
  • 举报
回复
在点击事件里加上ctrl按键判断 而不是在外面
当作看不见 2016-11-21
  • 打赏
  • 举报
回复

var ctrl = false;
// 按下Ctrl键 
$(document).keydown(function(e){
        if(e.which == 17) {   // 表示按下的是Ctrl键
             ctrl=true;
         }
  });

// 释放Ctrl键
$(document).keyup(function(e){
        if(e.which == 17){   // 表示释放的是Ctrl键
            ctrl = false;
        }
 });
 
 $('.title').click(function(){
    if(ctrl)
    $(this).addClass('active');
});

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧