引用自: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 组件的示例和相关文档,帮助我们理解和应用 Datagrid。 首先,`datagrid.doc` 文件很可能是 Datagrid 的简要说明文档,它...
根据提供的文件信息,本文将详细解释与“jQuery EasyUI”相关的知识,特别是“EasyLoader”组件的使用方法及其在实际项目中的应用场景。 ### jQuery EasyUI简介 jQuery EasyUI 是一个基于 jQuery 的用户界面插件...
jQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列的 UI 组件,使得开发者能够快速构建出美观且功能丰富的 Web 应用程序。这个框架大大简化了网页界面的设计工作,使得开发者可以专注于业务逻辑,而无需...
jQuery EasyUI 的核心在于其组件系统,这些组件包括但不限于数据网格(datagrid)、下拉菜单(combobox)、对话框(dialog)、表单(form)、布局(layout)、菜单(menu)、面板(panel)、进度条(progressbar)、...
2. **UI 组件**: jQuery EasyUI 提供了诸如对话框(dialog)、表格(datagrid)、下拉框(combobox)、树形控件(tree)、菜单(menu)等常见的 UI 组件,这些组件都封装了复杂的交互逻辑和样式,使得开发者无需关心...
jQuery EasyUI 1.0.5改进了dialog组件,目前dialog组件可以从标记中读取collapsible,minimizable,maximizable和 resizable属性 5. jQuery EasyUI 1.0.5新增了一个校验器插件,用于检测用户的输入的合法性
- **EasyUI 组件**: EasyUI 将jQuery的功能进一步扩展,提供了如`datagrid`(数据网格)、`panel`(面板)、`dialog`(对话框)等丰富的UI组件。 2. **组件的使用**: - **初始化组件**: 使用`$(selector)....
2. **组件详解**:jQuery EasyUI 提供了许多组件,如 `datagrid`(数据网格)、`dialog`(对话框)、`menu`(菜单)、`tabs`(选项卡)、`tree`(树形结构)和`form`(表单)。每个组件都有详细的配置选项、方法和...
JQuery EasyUI 是一个基于 jQuery 的轻量级前端框架,它提供了一系列的 UI 组件,如对话框、表格、树形菜单、按钮等,用于快速构建用户界面。在这个"Jquery EasyUI 日历Demo"中,我们将探讨如何利用 EasyUI 的日历...
EasyUI 是基于 jQuery 的一组 UI 组件,它为开发者提供了诸如表格(datagrid)、下拉菜单(combobox)、树形控件(tree)、对话框(dialog)等常见的网页元素。这些组件不仅具有丰富的样式,还内置了大量的功能,如...
JQueryEasyUI是一个基于jQuery的UI框架,它封装了一系列的JavaScript组件,使得开发者能够轻松创建出功能丰富的Web应用程序界面。这个WebForm控件库是专门为.NET平台设计的,旨在简化.NET开发人员在WebForm上的工作...
EasyUI的核心是其组件库,包括窗口(window)、表格(datagrid)、面板(panel)、下拉框(combobox)、表单(form)等,这些组件都是预先封装好的JavaScript对象,具有良好的可配置性和可扩展性。通过简单的HTML...
jQuery EasyUI 1.3.3 是一个基于 jQuery 的轻量级前端开发框架,它提供了丰富的用户界面组件,如对话框、表格、菜单、表单等,极大地简化了Web应用程序的开发工作。这个源码包包含了未混淆的代码,使得开发者能够...
jQuery EasyUI 是一个基于 jQuery 的轻量级框架,它为开发者提供了一系列组件,使得构建交互式、响应式的Web应用程序变得更加简单。在1.7.0版本中,这个强大的工具集进一步优化和完善,为开发者带来了更丰富的功能和...
jQuery EasyUI 是一个基于 jQuery 的前端开发框架,它提供了一系列易于使用的UI组件,极大地简化了网页界面的构建过程。这个RAR文件包含的是jQuery EasyUI的常用UI组件,版本为1.0.5。以下是关于jQuery EasyUI及其...
### jQuery EasyUI 对话框组件 Dialog 使用详解 #### 1. 概述 jQuery EasyUI 是一个基于 jQuery 的前端 UI 框架,提供了一系列易于使用的组件,用于创建现代的网页应用。其中,Dialog 对话框组件是常用组件之一,...
jQuery EasyUI则是一个基于jQuery的UI库,提供了丰富的组件和易于使用的API,用于快速构建现代、响应式的Web应用界面。 在这个"ssm+jqueryeasyui案例"中,我们可以学习如何将这三者结合,构建出功能完善的Web应用。...
jQuery EasyUI 是一个基于 jQuery 的前端开发框架,它简化了网页界面的构建,提供了一系列的 UI 组件,如对话框、表格、下拉菜单、树形结构等。这个参考资源合集包含了三个重要的文档,分别为 jQuery EasyUI 1.2 API...
2. **组件使用**:学习基础组件如`datagrid`(数据网格)、`panel`(面板)、`dialog`(对话框)和`tabs`(选项卡)的使用方法,包括如何定义属性、数据源绑定以及事件监听。 3. **主题应用**:jQuery EasyUI 提供...
jQuery EasyUI 是一个基于 jQuery 的前端开发框架,用于快速构建用户界面。v1.10.0 是这个框架的一个特定版本,包含了一系列组件和功能,适用于网页应用的开发。在这个zip压缩包中,我们可以找到一系列文件,每个都...