Shift + mouseover с jQuery
Я пытаюсь определить, нажата ли клавиша сдвига, когда курсор перемещается по определенному элементу. Функция срабатывает, но только после первого щелчка на другом элементе. Есть ли способ обойти это? Я попытался настроить фокус как на документ, так и на элемент, и попытался создать функцию псевдо-щелчка, но до сих пор ничего не работало.
Например, следующий код работает только после нажатия на другой элемент на странице:
$("#selector").mouseover(function(e){
if(e.shiftKey) {
console.log("the shift key is pressed");
}
});
Заранее благодарим за любую информацию.
Ответы
Ответ 1
проверьте это в событии нажатия клавиши:
$(document).keypress(function (e) {
if(e.shiftKey) {
pressed = true; // pressed is a global varialbe. Be carefull of the scope
}
}
затем на клавиатуре:
$(document).keyup(function(event){
pressed = false;
});
то do:
$("#selector").mouseover(function(e){
if(pressed) {
console.log("the shift key is pressed");
}
});
или наоборот:
$("#selector").mouseover(function(e){
isover = true;
});
и
$(document).keypress(function (e) {
if(e.shiftKey) {
alert("do something")
}
}
Ответ 2
Нет необходимости хранить в переменной при нажатии и отпускании клавиши shift. Вы можете добиться того, чего хотите:
$('#selector').mouseover(
function(e){
if (e.shiftKey)
{
console.log("the shift key is pressed");
}
}
);
Ответ 3
Я пробовал свой код, как это, и он отлично работает. Однако вам нужно "сдвинуть", а затем наведение мыши.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script>
loadHandler = function(){
$("#selector").mouseover(function(e){
if(e.shiftKey) {
alert("the shift key is pressed");
}
});
}
</script>
</head>
<body onload="loadHandler();">
<div style="border:1px solid black" id="selector">
<br/>
<br/>
This is a div.
<br/>
<br/>
<div>
</body>
</html>
К какому типу элемента он применяется?
Ответ 4
Рабочий образец,
MouseEvent.shiftKey, MouseEvent.ctrlKey
MouseEvent.ctrlKey
MouseEvent.shiftKey
<img onmouseover="keypress_test(event)" onmouseout="keypress_test(event)">
function keypress_test(event) {
// false, no press,
// true, pressed
console.log(event.ctrlKey)
console.log(event.shiftKey)
}