JQuery: TypeError: الكائن [object object] لا يحتوي على طريقة 'datePicker'

load.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  

حاولت عدة طرق لإصلاحه ولكن لا يزال هناك خطأ. ما الذي يسبب الخطأ؟ شكرا لكم

0
@ F.Calderan نعم
وأضاف المؤلف Andrew, مصدر
هو #duedate عنصر تسترده مع مكالمة ajax السابقة؟
وأضاف المؤلف fcalderan, مصدر

1 إجابة

بما أن load ينفذ مكالمة ajax غير متزامنة ويكون العنصر #duedate داخل المورد يجب الانتظار حتى نهاية المكالمة قبل استخدام طريقة مطبقة على هذا العنصر

بما أن أي طريقة ajax على jQuery تقوم بإرجاع كائن مؤجل يمكنك متابعة تنفيذ التعليمات البرمجية داخل done() callback

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

أو استخدام رد اتصال بسيط

$('.addDialog').load('/add/addtaskform', function() {
    $('#dueDate').datePicker();
});
0
وأضاف
غير معروف TypeError: كائن [كائن كائن] يحتوي على أي أسلوب 'تم'
وأضاف المؤلف Andrew, مصدر
الإصدار الذي يستخدمه هو 1.7.2
وأضاف المؤلف Andrew, مصدر
رائع شكرا لك
وأضاف المؤلف Andrew, مصدر
جرب الطريقة الثانية
وأضاف المؤلف fcalderan, مصدر