2013-04-15 10 views
1

我有以下工作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是不是一個函數。

+3

你是怎麼試過的?目前還不清楚爲什麼你不能簡單地聲明一個函數。 –

+1

關於你的編輯:'on'需要一個*函數*,但是你要給它一個函數的結果*(這裏恰好是一個'jQuery'對象)。函數末尾的'()'表示「調用'refresh_datetime_listener'並將其返回值傳遞給'on''。因此,當事件發生的時候,'on'嘗試調用一個'jQuery'對象作爲函數,這並不意外失敗。 – apsillers

回答

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

相關問題