Jquery检测单击或按键?

时间:2017-10-17 14:57:23

标签: javascript jquery

如何将这两者合二为一,以避免重复两次代码:

document.querySelector('body').onkeydown = function(e){
  if ((e.keyCode || e.which) == 77) {
    e.preventDefault();
     // code...
    }
}

$("button").on('click', function(){
     // code...
});

基本上我希望能够点击元素或按键。

3 个答案:

答案 0 :(得分:2)

正如@forgivenson建议的那样,您可以通过将可执行代码放入 function 来避免代码重复。它看起来像这样:

document.querySelector('body').onkeydown = function(e){
  if ((e.keyCode || e.which) == 77) {
    e.preventDefault();
    doSomething(); // call your function on keydown
  }
}

$("button").on('click', doSomething); // call your function on click

function doSomething() {
  // code to execute on keydown or click
}

以下是一个例子。键入m(或M)或点击按钮即可调用您的代码。



$("input").on('keydown', function(e){
  if ((e.keyCode || e.which) == 77) {
    e.preventDefault();
    doSomething(); // call your function on keydown
  }
});

$("button").on('click', doSomething); // call your function on click

function doSomething() {
  // code to execute on keydown or click
  console.log("You typed 'm' or clicked the button.");
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input placeholder="Type here">
<button>Click Me</button>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如何调用函数???

function doStuff(){

}


document.querySelector('body').onkeydown = function(e){
  if ((e.keyCode || e.which) == 77) {
    e.preventDefault();
     doStuff()
    }
}

$("button").on('click', doStuff);

答案 2 :(得分:0)

您可以简单地将所有代码放在一个函数someFunc中,然后就可以调用它

&#13;
&#13;
function someFunc() {
  alert('Hi');
}

document.querySelector('body').onkeydown = function(e){
  if ((e.keyCode || e.which) == 77) {
    e.preventDefault();
      someFunc();
    }
}

$("button").on('click', function(){
     someFunc();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<button>Click me or `m` in your keyboard</button>
&#13;
&#13;
&#13;