javascript - 提取代码并将其放入另一个函数中

标签 javascript jquery refactoring

我有以下有效的 js/jquery 代码:

$(document).on('nested:fieldAdded', function(event){
  return $('.datetime_field').datetimepicker({
  altField: '#datetime_to_server',
  altFormat: 'yy-m-d',
  altFieldTimeOnly: false,
  altTimeFormat: 'hh:mm:00'
}); 
})

整个函数事件也在其他地方调用:

(function() {

  $(document).ready(function() {
    return $('.datetime_field').datetimepicker({
      altField: '#datetime_to_server',
      altFormat: 'yy-m-d',
      altFieldTimeOnly: false,
      altTimeFormat: 'hh:mm:00'
    });
  });

}).call(this);

我想提取相同的代码并调用它。问题是我尝试过但我可以让它工作。我如何提取相似的代码并从这两个不同的地方调用它?

编辑:我尝试过这个:

$(document).on('nested:fieldAdded', refresh_datetime_listener())

function refresh_datetime_listener(){
return $('.datetime_field').datetimepicker({
  altField: '#datetime_to_server',
  altFormat: 'yy-m-d',
  altFieldTimeOnly: false,
  altTimeFormat: 'hh:mm:00'
}); 
}

但它说 datetimepicker 不是一个函数。

最佳答案

正如@dystroy所说,你尝试过

function myFunc(event){
  return $('.datetime_field').datetimepicker({
  altField: '#datetime_to_server',
  altFormat: 'yy-m-d',
  altFieldTimeOnly: false,
  altTimeFormat: 'hh:mm:00'
}); 
}

然后

$(document).on('nested:fieldAdded', myFunc);

(function() {
  $(document).ready(myFunc);
}).call(this);

请注意,事件绑定(bind)是传递函数引用,而不是函数调用。 myFunc,而不是 myFunc()

关于javascript - 提取代码并将其放入另一个函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16015943/

相关文章:

演示中的 jQuery 和 CSS float 问题

ruby-on-rails - `new` 关键字在此 Ruby 方法定义中如何工作?

c# - 我如何摆脱这个goto?

javascript - JavaScript 中的错误值

javascript - NetSuite - 使用行项目字段自动填充自定义正文字段

javascript - 在 Javascript 中检查数组中元素的类型

javascript - 如何有两个淡入淡出,一个接一个地延迟和淡出?

javascript - 引用错误 : monaco is not defined

jquery - 单击 Div 时触发操作,但单击该 Div 内的链接时不触发操作

ruby-on-rails - Rails,重复代码重构