2017-05-19 18 views
2

私はこの奇妙な問題があります。ドキュメント準備関数内で日付ピッカーを初期化しようとしています。関数内で呼び出されたときにDatePickerが機能しない

$(document).ready(fncInitialize); 

    function fncInitialize() { 
     fncBindControls(); 
    } 

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

問題はこれは動作しません。 datepickerが機能していません。幸運にも私が要素の位置を変更するとき:

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

    function fncBindControls() { 
    } 

このコードは機能します。しかし、なぜ?私は、保守性のためにdatepickerを別の関数に置いていますが、動作しません。私は本当にドキュメントの最初の機能の中に置く必要がありますか?

+0

この '入力[データ-日付ピッカー=「真」]は'に存在しませんBindControlsしようとすると、ソースページ? –

答えて

4

第2の機能では、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

それはかなりうまく動作し、私はあなたの説明を理解しています。どうもありがとう! –

関連する問題