2010-10-04 28 views
0

我正在使用FullCalendar插件,并尝试填充divs(事件)列表时遇到一些问题,然后将它们初始化为FullCalendar事件对象。定时JQuery AJAX调用

最初,事件是硬编码的,所以一切工作正常。然后我尝试它来填充我的活动选项第一:

//This part is working 
    $(document).ready(function() { 

       $.ajax({ 
        type: "POST", 
        url: "myService.asmx/getOperators", 
        contentType: 'application/json; charset=utf-8', 
        success: function(doc) { 

         var ops = (eval(doc.d)); 

         for (var i = 0; i < ops.length; i++) { 

          $('#external-events').append('<div class="external-event">' + ops[i].FullName + '</div>'); 
          alert(ops[i].FullName + " has been added to the div"); 
         } 



        } 
       }); 

然后,在脚本的末尾,我试图通过每个格迭代和初始化它,就像这样:

$('#external-events div.external-event').each(function() { 

      $(this).data('eventObject', eventObject); 

      }); 

问题是,在初始化运行的时候div还没有被插入。我尝试了.delay,但无法让它工作。

我想尝试初始化每个div,因为它被添加 - 但我不知道如何引用一个动态创建的对象没有.each循环(即.each使用“this”引用每个元素)

有人能告诉我如何计时完成AJAX调用后的第二个例程,或者如何引用一堆具有相同类名的动态创建的元素?

回答

1

您可以添加您的初始化代码到AJAX的功能成功后,直接在for循环结束:

    success: function(doc) { 
         var ops = (eval(doc.d)); 

         for (var i = 0; i < ops.length; i++) { 
          $('#external-events').append('<div class="external-event">' + ops[i].FullName + '</div>'); 
          alert(ops[i].FullName + " has been added to the div"); 
         } 

         $('#external-events div.external-event').each(function() { 
          $(this).data('eventObject', eventObject); 
         }); 
        }