代码之家  ›  专栏  ›  技术社区  ›  Barrie Reader

如果单击或按下键

  •  3
  • Barrie Reader  · 技术社区  · 14 年前

    if (button.click() || (keydown == 39)) {
       //stuff
    }
    
    4 回复  |  直到 14 年前
        1
  •  8
  •   mkoistinen    14 年前
    function stuff(e) { alert('Something happened'); }
    
    $('input[type=button]').click(function(e) { 
        stuff(e);
    });
    
    $(document).keydown(function(e) { 
        if (e.keyCode == 39) { stuff(e); }
    });​​​
    

    http://www.jsfiddle.net/4WuB5/

        2
  •  8
  •   Andy E    14 年前

    你可以 bind() 多个事件:

    $(button).bind("click keydown", function (evt) {
        if (evt.type == "keydown" && evt.which == 39)
            alert("Key 39 pressed");
        else if (evt.type == "click")
            alert("Clicked!");
    });
    

    例子: http://jsfiddle.net/Bymug/

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

        3
  •  3
  •   Guffa    14 年前

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

    function x() {
      ...
    }
    
    $('.someclass')
      .click(x)
      .keydown(function(e){
        if (e.keyCode == 39) x(e);
      });
    
        4
  •  3
  •   djdd87    14 年前

    你可以用 live 事件和处理多个事件:

    $('.someClass').live('keydown mouseclick', function(event) {
      if (event.type == 'mouseclick') {
          // Do something
      } else if (event.type == 'keydown' {
          if (event.keyCode == '39')
          {
              // Do something
          }   
      }
    });