Javascript 如果单击或向下键

Javascript 如果单击或向下键,javascript,jquery,Javascript,Jquery,在jQuery中,有没有一种方法可以实现如下功能: if (button.click() || (keydown == 39)) { //stuff } 您可以选择多个事件: $(button).bind("click keydown", function (evt) { if (evt.type == "keydown" && evt.which == 39) alert("Key 39 pressed"); else if (evt.t

在jQuery中,有没有一种方法可以实现如下功能:

if (button.click() || (keydown == 39)) {
   //stuff
}
您可以选择多个事件:

$(button).bind("click keydown", function (evt) {
    if (evt.type == "keydown" && evt.which == 39)
        alert("Key 39 pressed");
    else if (evt.type == "click")
        alert("Clicked!");
});
$('.someClass').live('keydown mouseclick', function(event) {
  if (event.type == 'mouseclick') {
      // Do something
  } else if (event.type == 'keydown' {
      if (event.keyCode == '39')
      {
          // Do something
      }   
  }
});
示例:

请注意,空格键和enter键也可能触发按钮上的单击事件

function stuff(e) { alert('Something happened'); }

$('input[type=button]').click(function(e) { 
    stuff(e);
});

$(document).keydown(function(e) { 
    if (e.keyCode == 39) { stuff(e); }
});​​​

您可以使用事件并处理多个事件:

$(button).bind("click keydown", function (evt) {
    if (evt.type == "keydown" && evt.which == 39)
        alert("Key 39 pressed");
    else if (evt.type == "click")
        alert("Clicked!");
});
$('.someClass').live('keydown mouseclick', function(event) {
  if (event.type == 'mouseclick') {
      // Do something
  } else if (event.type == 'keydown' {
      if (event.keyCode == '39')
      {
          // Do something
      }   
  }
});

不,它们是单独的事件,所以你必须单独连接它们。可以使用命名函数从每个事件调用:

function x() {
  ...
}

$('.someclass')
  .click(x)
  .keydown(function(e){
    if (e.keyCode == 39) x(e);
  });

我不明白你的意思。我想在
keydown
mouseclick
上触发一个事件。我想说你必须将一个函数绑定到
click
keydown
事件。+1-详细说明,然后检查evt中是否存在keyCode,测试==39,然后执行你的“填充”或返回…然后检查你得到的是哪一个并处理
keyCode==39
位。这不只是在按钮处于焦点时对keydown事件做出响应吗?如果是,为什么要麻烦?@mkoistinen:这个问题最好是针对OP,他没有指定他想要在单独的元素或对象上执行keydown事件。是的,但他也没有说他不想要为什么这里需要live而不是bind?
.live()
适用于现有和未来的匹配元素
.bind
仅分配给现有匹配项。它们实际上是一样的,但我发现它们通常更有用。我理解live、bind(one和delegate)之间的区别,但我很好奇你为什么说“你需要使用
live
…”。当然可以,但是当
bind
(或
one
delegate
)更合适时,我认为使用
live
是草率的。@mkoistinen-对不起,我的措辞选择不正确。你不需要太多,但我看到你的困惑,所以我更新了答案。这对我来说很好,我也投票赞成上面的答案。