1

ロード.js:

jQuery(document).ready(function($) {
    $('.dialog ul li').click(function(e) {
        switch($(this).attr('id')) {
        case 'addProject':
            $('.addDialog').load('/add/addprojectform');
            break;
        case 'addTask':
            $('.addDialog').load('/add/addtaskform');
            $('#dueDate').datePicker();
            break;
        }
    });
});  

そして、これはヘッダーにあります:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
<script type="text/javascript">
$.noConflict();
</script>
<script src="js/utils.js"></script>
<script src="js/load.js"></script>  

私が得るエラーは次のとおりです。

Uncaught TypeError: Object [object Object] has no method 'datePicker' load.js:10
(anonymous function) load.js:10
f.event.dispatch jquery.min.js:3
f.event.add.h.handle.i jquery.min.js:3  

私はそれを修正するためにいくつかの方法を試しましたが、それでもエラーが発生します。エラーの原因は何ですか?ありがとうございました

4

1 に答える 1

1

load非同期の ajax 呼び出しを実行し、要素がリソース内にあるため#duedate、その要素に適用されるメソッドを使用する前に、呼び出しの終了を待つ必要があります

done()jQuery の ajax メソッドは Deferred Object を返すため、コールバック内でコードの実行を続行できます。

$('.addDialog').load('/add/addtaskform').done(function() {
    $('#dueDate').datePicker();
});

または単純な成功コールバックを使用する

$('.addDialog').load('/add/addtaskform', function() {
    $('#dueDate').datePicker();
});
于 2012-06-22T10:11:25.837 に答える