jQuery没有在ajax加载模式中运行,直到模式调整大小

时间:2012-06-01 17:17:00

标签: jquery asp.net-mvc fullcalendar

我有一个模型,当打开时,会加载局部视图。

局部视图有一个jQuery函数。打开模态时,jQuery不会运行。

一旦我调整模式的大小,jQuery就会运行并且会出现预期的结果。

以下是加载html并打开模态

的代码
 $(document).ready(function () {
        $("#reschedule").button().click(function () {

                            var url = $("#rescheduleUrl").attr('href');

                            $.ajaxSetup({ cache: false });
                            $.ajax({
                                url: url,
                                success: function (data) {
                                    $("#rescheduleDiv").html(data);
                                    $("#rescheduleDiv").dialog('open');
                                }
                            });
        });
    });

从加载的局部视图中,这里是我需要立即运行的jQuery。

$('#calendar').fullCalendar({
    theme: true,
    header: {
        left: 'month,agendaWeek,agendaDay',
        center: 'title',
        right: ''
    },
    defaultView: 'agendaWeek',
    editable: false,
    minTime: 5,
    maxTime: 20,
    events: "/ServiceTicket/GetCalendarEvents/",
    allDaySlot: false
});

我也试过用

包裹
   $(document).ready(function() {
     ...
   });

具有相同的结果。

任何想法我需要做什么才能让它立即运行?我已经在firebug中观看了它,并且当模态重新调整大小时它会运行,但直到那时才会运行。

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为你需要将部分视图JQuery包装在document.ready函数中。这就是我们如何在一个从局部视图中“弹出”的颜色框模式中启动JQuery

 $(document).ready(function () {
$('#calendar').fullCalendar({
    theme: true,
    header: {
        left: 'month,agendaWeek,agendaDay',
        center: 'title',
        right: ''
    },
    defaultView: 'agendaWeek',
    editable: false,
    minTime: 5,
    maxTime: 20,
    events: "/ServiceTicket/GetCalendarEvents/",
    allDaySlot: false
});
});

修改

我认为在父页面中反转加载/显示功能可能会解决问题。

success: function (data) {    
    $("#rescheduleDiv").dialog('open');
    $("#rescheduleDiv").html(data);
 } 

通过在“显示”对话框之前填充html,doc.ready函数可能永远不会与您的事件处理程序一起触发,直到您与对话框进行交互。如果您先显示它,然后加载html数据,您的事件处理程序将按预期显示工作。