多个事件的事件处理程序

时间:2012-06-29 20:25:52

标签: javascript jquery

  

可能重复:
  Bind multiple events to jQuery 'live' method

我有以下功能:

$("td.delivered").click(function() {

        $(this).html($("<input/>", {
          id: 'inp',
          style: 'width:80px;',
          placeholder: "YYYY-MM-DD",
          change: function() {
            selectdone(this, title_id, status_type);
          },
          blur: function() {
            selectdone(this, title_id, status_type);
          },
          onkeypress=="Return": function() { // pseudo-code
            selectdone(this, title_id, status_type);
          }
        })
        );
}

以下作品,写一个更好的方法是什么?

          change: function() {
            selectdone(this, title_id, status_type);
          },
          blur: function() {
            selectdone(this, title_id, status_type);
          },
          onkeypress: function(e) {
            if (e.keyCode == 13) {
            selectdone(this, title_id, status_type);
            }
          }

我如何更简洁地写这个,让selectdone函数触发changeblurreturn

2 个答案:

答案 0 :(得分:2)

您可以使用bind

  $(this).html($("<input/>", {
      id: 'inp',
      style: 'width:80px;',
      placeholder: "YYYY-MM-DD",
      change: function() {
        selectdone(this, title_id, status_type);
      }
  });

  $(this).bind('blur keypress change', function(e){
     selectdone(this, title_id, status_type);
  });

您可能需要修改不同事件的代码。请注意,要知道当前触发了哪个事件,您可以使用e.type

答案 1 :(得分:1)

$(this).html($("<input/>", {
      id: 'inp',
      style: 'width:80px;',
      placeholder: "YYYY-MM-DD"
  });

$('input', this).bind('change blur keypress', function(e) {
    if(e.type != 'keypress' || e.keyCode == 13){
        selectdone(this, title_id, status_type);
    }
});