`

jquery esayui panel,dialog,window组件越界问题汇总

 
阅读更多
引用自:http://www.easyui.info/archives/689.html

实现代码:

最终综合两种方案,整理出代码:
1 var ie = (function() {
2     var undef, v = 3, div = document.createElement('div'), all = div
3             .getElementsByTagName('i');
4     while (div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->', all[0]);
5     return v > 4 ? v : undef;
6 }());
7 /**
8 * add by cgh
9 * 针对panel window dialog三个组件调整大小时会超出父级元素的修正
10 * 如果父级元素的overflow属性为hidden,则修复上下左右个方向
11 * 如果父级元素的overflow属性为非hidden,则只修复上左两个方向
12 * @param width
13 * @param height
14 * @returns
15 */
16 var easyuiPanelOnResize = function(width, height) {
17     if (!$.data(this, 'window') && !$.data(this, 'dialog'))
18         return;
19
20     if (ie === {
21         var data = $.data(this, "window") || $.data(this, "dialog");
22         if (data.pmask) {
23             var masks = data.window.nextAll('.window-proxy-mask');
24             if (masks.length > 1) {
25                 $(masks[1]).remove();
26                 masks[1] = null;
27             }
28         }
29     }
30     if ($(this).panel('options').maximized == true) {
31         $(this).panel('options').fit = false;
32     }
33     $(this).panel('options').reSizing = true;
34     if (!$(this).panel('options').reSizeNum) {
35         $(this).panel('options').reSizeNum = 1;
36     } else {
37         $(this).panel('options').reSizeNum++;
38     }
39     var parentObj = $(this).panel('panel').parent();
40     var left = $(this).panel('panel').position().left;
41     var top = $(this).panel('panel').position().top;
42
43     if ($(this).panel('panel').offset().left < 0) {
44         $(this).panel('move', {
45                     left : 0
46                 });
47     }
48     if ($(this).panel('panel').offset().top < 0) {
49         $(this).panel('move', {
50                     top : 0
51                 });
52     }
53
54     if (left < 0) {
55         $(this).panel('move', {
56                     left : 0
57                 }).panel('resize', {
58                     width : width + left
59                 });
60     }
61     if (top < 0) {
62         $(this).panel('move', {
63                     top : 0
64                 }).panel('resize', {
65                     height : height + top
66                 });
67     }
68     if (parentObj.css("overflow") == "hidden") {
69         var inline = $.data(this, "window").options.inline;
70         if (inline == false) {
71             parentObj = $(window);
72         }
73
74         if ((width + left > parentObj.width())
75                 && $(this).panel('options').reSizeNum > 1) {
76             $(this).panel('resize', {
77                         width : parentObj.width() - left
78                     });
79         }
80
81         if ((height + top > parentObj.height())
82                 && $(this).panel('options').reSizeNum > 1) {
83             $(this).panel('resize', {
84                         height : parentObj.height() - top
85                     });
86         }
87     }
88     $(this).panel('options').reSizing = false;
89 };
90 /**
91 * add by cgh
92 * 针对panel window dialog三个组件拖动时会超出父级元素的修正
93 * 如果父级元素的overflow属性为hidden,则修复上下左右个方向
94 * 如果父级元素的overflow属性为非hidden,则只修复上左两个方向
95 * @param left
96 * @param top
97 * @returns
98 */
99 var easyuiPanelOnMove = function(left, top) {
100     if ($(this).panel('options').reSizing)
101         return;
102     var parentObj = $(this).panel('panel').parent();
103     var width = $(this).panel('options').width;
104     var height = $(this).panel('options').height;
105     var right = left + width;
106     var buttom = top + height;
107     var parentWidth = parentObj.width();
108     var parentHeight = parentObj.height();
109
110     if (left < 0) {
111         $(this).panel('move', {
112                     left : 0
113                 });
114     }
115     if (top < 0) {
116         $(this).panel('move', {
117                     top : 0
118                 });
119     }
120
121     if (parentObj.css("overflow") == "hidden") {
122         var inline = $.data(this, "window").options.inline;
123         if (inline == false) {
124             parentObj = $(window);
125         }
126         if (left > parentObj.width() - width) {
127             $(this).panel('move', {
128                         "left" : parentObj.width() - width
129                     });
130         }
131         if (top > parentObj.height() - height) {
132             $(this).panel('move', {
133                         "top" : parentObj.height() - height
134                     });
135         }
136     }
137 };
138
139 $.fn.window.defaults.onResize = easyuiPanelOnResize;
140 $.fn.dialog.defaults.onResize = easyuiPanelOnResize;
141 $.fn.window.defaults.onMove = easyuiPanelOnMove;
142 $.fn.dialog.defaults.onMove = easyuiPanelOnMove;

使用的时候,请在引入easyui的核心文件后,直接追加以上代码,注意不要写在document.ready里面。

到这里,panel,window,dialog等组件越界的问题就算是基本解决了。欢迎大家测试,即时反馈Bug。
效果演示:

http://www.easyui.info/easyui/demo/window/062.html
分享到:
评论

相关推荐

    jquery easyui datagrid demo

    这个“jquery easyui datagrid demo”包含了一些关于如何使用 jQuery EasyUI 中 Datagrid 组件的示例和相关文档,帮助我们理解和应用 Datagrid。 首先,`datagrid.doc` 文件很可能是 Datagrid 的简要说明文档,它...

    jQuery EasyUI EasyUI 组件范例

    根据提供的文件信息,本文将详细解释与“jQuery EasyUI”相关的知识,特别是“EasyLoader”组件的使用方法及其在实际项目中的应用场景。 ### jQuery EasyUI简介 jQuery EasyUI 是一个基于 jQuery 的用户界面插件...

    jqueryEasyUI

    jQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列的 UI 组件,使得开发者能够快速构建出美观且功能丰富的 Web 应用程序。这个框架大大简化了网页界面的设计工作,使得开发者可以专注于业务逻辑,而无需...

    jquery easyui 帮助文档

    jQuery EasyUI 的核心在于其组件系统,这些组件包括但不限于数据网格(datagrid)、下拉菜单(combobox)、对话框(dialog)、表单(form)、布局(layout)、菜单(menu)、面板(panel)、进度条(progressbar)、...

    初试JqueryEasyUI(附Demo)

    2. **UI 组件**: jQuery EasyUI 提供了诸如对话框(dialog)、表格(datagrid)、下拉框(combobox)、树形控件(tree)、菜单(menu)等常见的 UI 组件,这些组件都封装了复杂的交互逻辑和样式,使得开发者无需关心...

    JQuery EasyUI 1.0.5 离线文档

    jQuery EasyUI 1.0.5改进了dialog组件,目前dialog组件可以从标记中读取collapsible,minimizable,maximizable和 resizable属性 5. jQuery EasyUI 1.0.5新增了一个校验器插件,用于检测用户的输入的合法性

    jQuery EasyUI的api

    - **EasyUI 组件**: EasyUI 将jQuery的功能进一步扩展,提供了如`datagrid`(数据网格)、`panel`(面板)、`dialog`(对话框)等丰富的UI组件。 2. **组件的使用**: - **初始化组件**: 使用`$(selector)....

    jQuery EasyUI 1.5.1 版 API 中文版

    2. **组件详解**:jQuery EasyUI 提供了许多组件,如 `datagrid`(数据网格)、`dialog`(对话框)、`menu`(菜单)、`tabs`(选项卡)、`tree`(树形结构)和`form`(表单)。每个组件都有详细的配置选项、方法和...

    Jquery EasyUI 日历Demo

    JQuery EasyUI 是一个基于 jQuery 的轻量级前端框架,它提供了一系列的 UI 组件,如对话框、表格、树形菜单、按钮等,用于快速构建用户界面。在这个"Jquery EasyUI 日历Demo"中,我们将探讨如何利用 EasyUI 的日历...

    jQuery easyui 全套文件

    EasyUI 是基于 jQuery 的一组 UI 组件,它为开发者提供了诸如表格(datagrid)、下拉菜单(combobox)、树形控件(tree)、对话框(dialog)等常见的网页元素。这些组件不仅具有丰富的样式,还内置了大量的功能,如...

    基于JQueryEasyUI类库的WebForm控件库

    JQueryEasyUI是一个基于jQuery的UI框架,它封装了一系列的JavaScript组件,使得开发者能够轻松创建出功能丰富的Web应用程序界面。这个WebForm控件库是专门为.NET平台设计的,旨在简化.NET开发人员在WebForm上的工作...

    Jquery EasyUI 页面框架Demo

    EasyUI的核心是其组件库,包括窗口(window)、表格(datagrid)、面板(panel)、下拉框(combobox)、表单(form)等,这些组件都是预先封装好的JavaScript对象,具有良好的可配置性和可扩展性。通过简单的HTML...

    jQuery EasyUI 1.3.3 源码

    jQuery EasyUI 1.3.3 是一个基于 jQuery 的轻量级前端开发框架,它提供了丰富的用户界面组件,如对话框、表格、菜单、表单等,极大地简化了Web应用程序的开发工作。这个源码包包含了未混淆的代码,使得开发者能够...

    jquery-easyui-1.7.0.zip官方文档

    jQuery EasyUI 是一个基于 jQuery 的轻量级框架,它为开发者提供了一系列组件,使得构建交互式、响应式的Web应用程序变得更加简单。在1.7.0版本中,这个强大的工具集进一步优化和完善,为开发者带来了更丰富的功能和...

    jQuery EasyUI 常用UI组件.RAR

    jQuery EasyUI 是一个基于 jQuery 的前端开发框架,它提供了一系列易于使用的UI组件,极大地简化了网页界面的构建过程。这个RAR文件包含的是jQuery EasyUI的常用UI组件,版本为1.0.5。以下是关于jQuery EasyUI及其...

    Jquery Easyui对话框组件Dialog使用详解(14)

    ### jQuery EasyUI 对话框组件 Dialog 使用详解 #### 1. 概述 jQuery EasyUI 是一个基于 jQuery 的前端 UI 框架,提供了一系列易于使用的组件,用于创建现代的网页应用。其中,Dialog 对话框组件是常用组件之一,...

    ssm+jqueryeasyui案例

    jQuery EasyUI则是一个基于jQuery的UI库,提供了丰富的组件和易于使用的API,用于快速构建现代、响应式的Web应用界面。 在这个"ssm+jqueryeasyui案例"中,我们可以学习如何将这三者结合,构建出功能完善的Web应用。...

    jQuery EasyUI 参考资源合集

    jQuery EasyUI 是一个基于 jQuery 的前端开发框架,它简化了网页界面的构建,提供了一系列的 UI 组件,如对话框、表格、下拉菜单、树形结构等。这个参考资源合集包含了三个重要的文档,分别为 jQuery EasyUI 1.2 API...

    jQueryEasyUI从零开始学源码part1

    2. **组件使用**:学习基础组件如`datagrid`(数据网格)、`panel`(面板)、`dialog`(对话框)和`tabs`(选项卡)的使用方法,包括如何定义属性、数据源绑定以及事件监听。 3. **主题应用**:jQuery EasyUI 提供...

    jQuery EasyUI v1.10.0.zip

    jQuery EasyUI 是一个基于 jQuery 的前端开发框架,用于快速构建用户界面。v1.10.0 是这个框架的一个特定版本,包含了一系列组件和功能,适用于网页应用的开发。在这个zip压缩包中,我们可以找到一系列文件,每个都...

Global site tag (gtag.js) - Google Analytics