javascript - 定位元素但确保它仍在屏幕上

标签 javascript jquery

我有一个 jQuery UI 对话框,当用户单击一个按钮时它会打开,我希望该对话框出现在按钮附近。这并不难,例如:

var pos = $('#mybutton').offset();
$('#mydlg').dialog({
    // ...
    autoOpen: false,
    position: [pos.left, pos.top]
});

问题是当按钮位于屏幕的最右侧或屏幕的最底部时。新打开的对话框将导致窗口滚动,因为它离开了屏幕。

如何计算位置,以便对话框向左/向上打开,以便它仅在这些情况下保留在屏幕上?

最佳答案

    var pos = $('#mybutton').offset();

    //if dialog height/width are known

    var dialogTop = pos.Top;
    var dialogLeft = pos.left;

    if((dialogHeight + pos.top) > $(window).height())
    {
        dialogTop -= dialogHeight;
    }

    if((dialogWidth + pos.left) > $(window).width())
    {
        dialogLeft -= dialogWidth;
    }

    $('#mydlg').dialog({
        autoOpen: false,
        position: [dialogLeft, dialogTop]
    });

    //if the dialog height/width are unknown then move this to a function in the   dialog onLoad

关于javascript - 定位元素但确保它仍在屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/627499/

相关文章:

jquery - MVC JavaScriptSerializer反序列化json

javascript - 使用 Angular Js、Oauth 2.0 和 GAE 作为我的后端和 Bootstrap 刷新页面

javascript - OAuth 2.0 token 处理。是否有服务器 token 和客户端 token ?

javascript - yii框架中存储数组

javascript - jQuery 根据选择选项显示/隐藏 div

javascript - ZK Framework 在 Chrome 17 中不起作用吗?

javascript - 如何使用用户输入的数据向 ngx-datatable 添加新行?

jquery - ASP.NET MVC3 清晰表单

javascript - 获取上一个 td 中的文本

jquery - 在选定的类 div 中查找输入按钮