jQuery Dialog Pop out - 向下滚动页面时的定位问题

时间:2011-10-07 00:42:36

标签: jquery jquery-ui jquery-ui-dialog

在这里开始了一个良好的开端:New google calendar, "pop-out" events, if they don't fit in the defined area,我现在还有一些问题需要解决。

这是jQuery代码:

// Google-Calendar-Style pop-outs
        $(function() {
            $(".inner").each(function() {
                var inner = $(this);
                var popout = inner.clone().removeClass("inner");
                popout.dialog({
                    autoOpen: false,
                    draggable: false,
                    resizable: false,
                    width: 150
                });
                var plusMore = $("<div><a href='#' onmouseover='this.style.cursor=\'pointer\''>See More...</a></div>");
                plusMore.insertBefore(inner.find("> div:eq(1)"));
                plusMore.click(function() {
                    var pos = inner.offset();
                    popout.dialog("option", {
                        position: [pos.left - 6, pos.top - 4]
                    }).dialog("open");
                });
            });
        });

以下是与此相关的CSS:

<style type="text/css">
        .outer {
            height: 45px;
            overflow: hidden;
        }
        .inner > h1 {
            margin: 0;
            font-size: 1em;
        }
        .ui-widget.ui-dialog {
            font-size: 1em;
            font-family: inherit;
            padding: 2px 5px;
        }
        .ui-dialog div.ui-dialog-titlebar {
            padding: 0;
            background: transparent none;
            border-width: 0;
        }
        .ui-dialog div.ui-dialog-content {
            padding: 0;
        }
    </style>

这是HTML(注意,我实际上使用Smarty在这里循环一些数组,但这是基础...每个循环(用户)重复内部<div>(所以有一个{每个单元格{1}}和一个outer

inner

这是一个截图,其中包含两个我想解决的问题。

  1. 当我向下滚动页面(甚至一点点),然后点击“查看更多...”时 - 弹出窗口不在正确的位置。如下图所示,它应该已经超过了第一行/盒子 - 但它却降低了很多。不要被愚弄,并认为它最终与第4个方框对齐 - 这只是一个巧合,因为即使是表格中的最后一个条目也会使屏幕上的框下限相同 - 而不是对齐。 <div class="outer"> <div class="inner"> <div> <a href=Tenant.php" style="text-decoration:none">{$tenant.firstName} {$tenant.lastName}</a><br> &nbsp;&nbsp;&nbsp;<a href="Message.php">Send Message</a><br> </div> </div> </div>

  2. 我想摆脱顶级冠军的空间。我只想让用户和链接列表从顶部开始 - 与弹出框的“X”位于同一行。

  3. Here is the issue I'm seeing

1 个答案:

答案 0 :(得分:1)

jQuery UI位置对话框相对于视口而不是文档,因此您需要在计算中考虑滚动。使用$(document).scrollTop()

popout.dialog("option", {
    position: [
        pos.left - 6 - $(document).scrollLeft(),
        pos.top - 4 - $(document).scrollTop()
    ]
});