0

重複の可能性:
複数のイベントを jQuery の「ライブ」メソッドにバインドする

私は次の機能を持っています:

$("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 に答える