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()

然后,您可以避免使用所有 keycode 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);
  }
});

解决它的一种方法。我不会尝试将第三个事件处理程序强制到action函数中,因为它会使action函数更加复杂。

于 2013-10-26T19:19:00.903 回答