0

このコードをリファクタリングする方法があるかどうか疑問に思っています:

Template.bookmarks.events({
    // save changes
    'keyup .set_tag' : function(e,t) {
      if(e.which === 13) {
        save_changes(e.target.id.substring(3));
      }
    },

    'keyup .set_name' : function(e,t) {
      if(e.which === 13) {
        save_changes(e.target.id.substring(4));
      }
    },
    'click .save_changes' : function(e,t) {
      save_changes(e.target.id);
    }
});
4

2 に答える 2

2

フォーム タグでラップしてみて、そのフォームの送信イベントをリッスンします。event.preventDefault() を必ず実行してください

その後、すべてのキーコード 13 を回避できます。

于 2013-10-27T00:34:36.453 に答える
1
function action(key, offset) {
  return function(e, t) {
    if (e.which === key) {
      save_changes(e.target.id.substring(offset))
    }
  }
}

Template.bookmarks.events({
  // save changes
  'keyup .set_tag': action(13, 3),
  'keyup .set_name': action(13, 4),
  'click .save_changes': function(e, t) {
    save_changes(e.target.id);
  }
});

それを解決する1つの方法。関数がより複雑actionになるため、関数に 3 番目のイベント ハンドラーを強制しようとはしません。action

于 2013-10-26T19:19:00.903 に答える