有没有办法扩展jQuery来处理自定义输入键事件?

Ken*_*h J 3 javascript jquery jquery-plugins jquery-events

当按下回车键时,我总是编写以下代码来处理:

$("#selectorid").keypress(function (e) {
    if (e.keyCode == 13) {
        var targetType = e.originalTarget
            ? e.originalTarget.type.toLowerCase()
            : e.srcElement.tagName.toLowerCase();
        if (targetType != "textarea") {
            e.preventDefault();
            e.stopPropagation();
            // code to handler enter key pressed
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

有没有办法扩展jQuery,以便我可以写:

$("#selectorid").enterKeyPress(fn);
Run Code Online (Sandbox Code Playgroud)

Dav*_*enn 5

您可以扩展jquery类似于:

jQuery.fn.returnPress = function(x) {
  return this.each(function() {
    jQuery(this).keypress(function(e) {
      if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
        x();
        return false;
      }
      else {
        return true;
      }
    });
  });
};
Run Code Online (Sandbox Code Playgroud)

可以调用如下:

$('selector').returnPress(function() { alert('enter pressed'); });
Run Code Online (Sandbox Code Playgroud)