今天在做一个功能的时候使用到了Jquery UI中的dialog组件,因为是一个很简单的组件,有很多功能都没有提供,比如说直接获取到dialog的位置,直接修改dialog的位置都是不行的,并且但可拖动的位置看不见的时候,这个时候就是坑了,关闭不了,也拖动不了,这个时候只能刷新页面来重新初始化界面了。
我今天解决的就是这个问题:解决这种问题有两种方式(个人认为)
1、修改属性让可拖动局域可见,进行拖动
2、不让出现可拖动区域不可见的情况。
针对第一种情况,我没有想到合适的办法。下面给出第二种情况的解决办法,原理就是判断当前dialog的位置,如果拖动位置的可能出现不可见的情况,这个时候修改dialog的位置,dialog有个方法是监听dialog拖动的,我的实现方式就是放在这个方法内的,代码如下:
/**
* 添加拖拽监听 当UI的位置跑出屏幕外的时候 进行更新
* @param {Object} event
* @param {Object} ui
*/
drag : function(event,ui)
{
var posX = ui.position.left;
var posY = ui.position.top;
if (posX < 5)
{
posX = 5;
}
if (posY < 5)
{
posY = 5;
}
ui.position.left = posX;
ui.position.top = posY;
}
这是一段很简单的代码,没有什么可以说的地方,主要是使用ui的一些属性。