jquery ui对话框 - 按钮单击事件处理程序

时间:2010-02-02 21:20:40

标签: javascript jquery jquery-ui dialog scope

我是js noob。我正在使用jquery FullCalendar插件,该插件公开了一个eventClick(calEvent,jsEvent,view)事件,当你点击日历上的事件时会调用该事件。在我的事件处理程序中,我想弹出一个对话框,询问用户是否只想编辑一次重复事件或整个事件。问题是THAT对话框的按钮单击处理程序需要访问calEvent变量,但我必须在$(document).ready中实例化对话框,但在eventClick函数之外。

到目前为止,这是我的代码:

$(document).ready(function() {
  $('#calendar').fullCalendar({
    events: getEvents,
    header: {
      left: 'title',
      center: 'prev,next',
      right: 'today month agendaWeek agendaDay'
    },
    theme: true,
    eventClick: function(calEvent, jsEvent, view) {
      if(calEvent.readOnly == true) {
        return;
      }
      if(calEvent.recurring) {
        if(calEvent.persisted) {
          editOccurrence(calEvent);
        } else {
          $("#edit_type_dialog").dialog("open");
        }
      } else {
        editEvent(calEvent);
      }
    }
  });

  $("#edit_type_dialog").dialog({
    modal:true,
    autoOpen: false,
    buttons: {
      All:function() {
        $(this).dialog("close");
        editEvent(calEvent);
      },
      This:function() {
        $(this).dialog("close");
        editOccurrence(calEvent);
      },
      Cancel:function() {
        $(this).dialog("close");
      }
    }
  });

  function getEvents(start, end, callback) {
    //get some events
  }

  function editEvent(calEvent) {
    alert("event edited");
  }

  function editOccurrence(calEvent) {
    alert("occurrence edited"); 
  }
});

所以问题归结为:如何将calEvent从eventClick函数转到edit_type_dialog中的按钮单击事件处理程序?

1 个答案:

答案 0 :(得分:0)

这就是我所做的(不确定它是否值得推荐,但它确实有效):

1)将对话框实例化移动到eventClick方法中,从而使其可以访问calEvent变量。 2)在fullCalendar实例化之外,但仍在$(document).ready()中我添加了$(“#edit_type_dialog”)。hide()