在Jquery中组合两个不同的事件

时间:2014-07-01 15:46:35

标签: jquery javascript-events

我试图将两个不同的事件组合成更紧凑的事物。这是到目前为止使用的:

$(document).on('keypress', 'editable.click-edit', function(e) {
    if(e.which==13) {
        fns._resetPageEdit(); //enter
    }
});
$(document).click(function() {
    fns._resetPageEdit(); // click anywhere
}); 

基本上,如果用户按下'输入'键在指定的文本框中,重置方法触发。如果用户点击其他任何地方,也会触发相同的方法。我觉得这有点乱,因为如果我要加入更多选项,组织它会更加混乱。任何建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

你可以做很多事情来清理它,事实上这两个事件明显不同,所以你想让它们分开:

// Keep the keypress event trigger local to the input
$('input#someinput').bind('keypress',function(e){
    var keynum = e.which ? e.which : e.keyCode;
    if( keynum == 13 ) {
      // enter key was pressed
      fns._resetPageEdit();
    }
});

// Handle a click anywhere on the page
$(document).click(function() {
  fns._resetPageEdit();
}); 

答案 1 :(得分:0)

除了删除文档click处理程序上的匿名函数,删除重复选择器并缩短if块之外,在示例中没有其他任何内容可以整理:

$(document)
    .on('keypress', 'editable.click-edit', function(e) {
        e.which == 13 && fns._resetPageEdit();
    })
    .on('click', fns._resetPageEdit)