我希望在悬停<div>
元素时控制事件。
我的代码非常有用,但我还有2个问题!
console.log('click and press');
每当我按下shift
并且没有找click
时,这就会被解雇 - 为什么在我按下班次时会被解雇在名为$(document).on('keydown click', function (e) {
我的JS代码如下
$(document).ready(function () {
$(".target").hover(function () {
$(document).on('keydown click', function (e) {
if (e.shiftKey) {
// code to go here for click
console.log('click and press');
}
});
$(document).on('keydown', function (e) {
if (e.shiftKey) {
// change cursor to ne-resize
$('.target').css('cursor', 'ne-resize', 'important');
}
});
$(document).on('keyup', function (e) {
// change cursor to sw-resize
$('.target').css('cursor', 'sw-resize', 'important');
});
});
});
由于
答案 0 :(得分:3)
您的事件绑定不正确。你可以使用:
演示: http://jsfiddle.net/g9ea8/8/
<强>代码:强>
$(document).ready(function () {
var hovering = false;
$(".target").hover(function () {
hovering = true;
}, function() {
hovering = false;
});
$(document).on('click', function (e) {
if (hovering && e.shiftKey) {
// code to go here for click
console.log('hovering+shift+click');
}
});
$(document).on('keydown', function (e) {
if (hovering && e.shiftKey) {
// change cursor to ne-resize
$('.target').css('cursor', 'ne-resize', 'important');
console.log('hovering+shift');
}
});
$(document).on('keyup', function (e) {
// change cursor to sw-resize
if(hovering) {
$('.target').css('cursor', 'sw-resize', 'important');
console.log('hovering+keyup');
}
});
});
答案 1 :(得分:2)
你需要先点击小提琴演示的原因是因为框架没有焦点,通常这应该可以正常工作。
您不应该附加keydown
听众,只需附加click
,否则keydown
无论click
如何都会触发此事件发生。
另外,目前每次将鼠标悬停在.target
上时都会附加3个处理程序,请参阅@ techfoobar的答案以获得更清晰的解决方案。