0

可能重复:
将多个事件绑定到 jQuery 'live' 方法

我有以下功能:

$("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

4

2 回答 2

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

于 2012-06-29T20:29:50.460 回答
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);
    }
});
于 2012-06-29T20:29:59.610 回答