提取代码以将其放入另一个函数中

时间:2013-04-15 13:06:22

标签: 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不是一个函数。

1 个答案:

答案 0 :(得分:1)

如@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);

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