在屏幕的给定坐标处显示JqueryUI对话框

时间:2015-06-03 09:49:36

标签: javascript jquery css jquery-ui fullcalendar

我正在使用fullcalendar开发日历网络应用。我想模仿谷歌日历以显示有关事件的信息和点击时删除按钮。我尝试这样做:

    element.bind('mousedown', function (e) {
              if(e.which == 1){
                var Xcord = e.clientX ;
                var Ycord = e.clientY ;
                var X = 'left+' + Xcord.toString() ;
                var Y = 'top+' + Ycord.toString() ;
                console.log(X) ;
                console.log(Y) ;
                var  start = moment(event.start)
                var  end = moment(event.end) 

                //The contents of the dialog box is the start time and end time ... 

                $('#Info').html(start.format('ddd') + " " + start.format('MMM DD') + " " + start.format('hh:mm a') + " - " + end.format('hh:mm a')).css( 'font' , '15px arial, sans-serif');

                console.log(X+' '+Y);
                //I expected the box to open at given coordinates but it is not doing so !!!
                $('#dialog').dialog({

                  position: { my: "center bottom", at: X+' '+Y }
                }); 
    //More code here ... 

然而,对话框没有在给定的协调器处打开。它总是在屏幕上的固定位置(中心的略微左侧)打开,而我希望它在用户点击的日历事件上方打开。

这种方法有什么问题吗?

还有一种更好的方法可以做到这一点。因为即使它工作,如果我向下滚动日历,对话框将不再附加到事件。它将固定在上述坐标处的屏幕上。

以下是html和css的一部分:

     <div id="dialog" title="Basic dialog"  style="display: none;">
            <p id = 'Info'></p>
           <button type="button" id = 'deleteEvent'> Delete</button>
    </div>

CSS:

    <style type="text/css">
    .ui-resizable-handle.ui-resizable-s::before, .ui-resizable-handle.ui-resizable-s::after {
        content: "";
        width: 0;
        height: 0;
        position: absolute;
        left: 150px;
        border-style: solid;
        border-width: 10px;
    }

    .ui-resizable-handle.ui-resizable-s::before {
        border-color: #aaa transparent transparent transparent;
        top: 2px;
    }

    .ui-resizable-handle.ui-resizable-s::after {
        border-color: #fff transparent transparent transparent;
        top: 1px;
    }

    .ui-dialog {
        overflow:visible;
    }

    .ui-dialog-title {
        display:none;
    }

    .ui-dialog-titlebar {
        background:transparent;
        border:none;
    }

    .ui-dialog .ui-dialog-titlebar-close {
        right:0;
    }

1 个答案:

答案 0 :(得分:0)

我使用css执行此操作,这可以让您决定生成对话框的位置,并在滚动时将其保留在那里,首先在您的CSS中添加此类: (按照你的意愿制作它,我使用它,所以我的对话框始终位于我的屏幕中央)

.fixed-dialog{
  position: fixed;
  top: 50px;
  left: 50px;
}

然后在创建对话框时,在模态选项中放置以下行:

$("#name").load().dialog(
                {   //Set options for the dialog here
                        dialogClass: 'fixed-dialog'
                });

<击>

编辑:如果我理解正确你想做这样的事情:

$("#dialog").dialog("option", "position", {
     at: "center bottom",
     of: this // this refers to the cliked element
   }).dialog('open');