2017-05-19 68 views
2

我有這個奇怪的問題。我想初始化文件準備函數內部一個datepicker:DatePicker在函數內調用時不起作用

$(document).ready(fncInitialize); 

    function fncInitialize() { 
     fncBindControls(); 
    } 

    function fncBindControls() { 
     var objDate = $(this).find("input[data-datepicker='True']"); 
     objDate.datepicker(); 
    } 

的問題是,這並不工作。日期選擇器不起作用。幸運的是,當我重新定位元素:

function fncInitialize() { 
     var objDate = $(this).find("input[data-datepicker='True']"); 
     objDate.datepicker(); 
     fncBindControls(); 
    } 

    function fncBindControls() { 
    } 

此代碼的工作。但爲什麼?我只是把datepicker放在另一個可維護性函數上,但它不起作用。我真的需要將它放在文檔準備好的第一個功能中嗎?

+0

做到這一點'輸入[數據日期選擇器=「真」]'存在於源代碼頁,當你嘗試BindControls? –

回答

4

問題是因爲在第二個函數中,你已經失去了this的範圍。你需要或者把它作爲一個參數:

$(document).ready(fncInitialize); 

function fncInitialize() { 
    fncBindControls(this); 
} 

function fncBindControls(el) { 
    var objDate = $(el).find("input[data-datepicker='True']"); 
    objDate.datepicker(); 
} 

,或者提供一個範圍,當你調用該函數:

function fncInitialize() { 
    fncBindControls.call(this); 
} 
+0

它工作得很好,我理解你的解釋。非常感謝! –

相關問題