一个活动层(id="addchatpicture"),一般是隐藏的,显示后要求定位到点击的按钮旁边,这样的按钮在页面上从上到下有很多,每个按钮之间有距离,要用jquery的最小的库,下面的代码有问题帮忙改一下:function move(element, e) {
var parent = getObj('addchatpicture');
//var parent = element.parentNode;
var zIndex = parent.style.zIndex;
// 获取目标div的左上角坐标
var left = parent.offsetLeft;
var top = parent.offsetTop;
while(parent = parent.offsetParent){
left += parent.offsetLeft;
top += parent.offsetTop;
}
// 复制一个div以占据目标div的起始位置
var newObj = document.createElement("div");
var o=$("#"+parent);
newObj.innerHTML =o.innerHTML;
newObj.className =o.className;
o.insertBefore(newObj,o);
// 将目标div改为绝对定位并赋上初使坐标值
o.css("position","absolute");
o.css("left",left);
o.css("top",top);
o.css("z-Index",9999);
//parent.style.position = "absolute";
//parent.style.left = left;
//parent.style.top = top;
//parent.style.zIndex = 1000;
//parent.style.backgroundColor = "#dddddd";
// 注册事件
if (document.addEventListener) {
document.addEventListener("mousemove", startMove, true);
document.addEventListener("mouseup", stopMove, true);
} else {
document.onmousemove = startMove;
document.onmouseup = stopMove;
}
ee = e || event;
var deltaX = e.clientX - parseInt(o.css.left);
var deltaY = e.clientY - parseInt(o.css.top);
// 开始移动
function startMove(e) {
ee = e || event;
eelement.style.left = e.clientX - deltaX + "px";
eelement.style.top = e.clientY - deltaY + "px";
};
// 停止移动并重新定位
function stopMove(e) {
ee = e || event;
var mouseX = e.clientX;
var mouseY = e.clientY;
// 取消注册的事件
if (document.removeEventListener) {
document.removeEventListener("mousemove", startMove, true);
document.removeEventListener("mouseup", stopMove, true);
} else {
document.onmousemove = "";
document.onmouseup = "";
}
// 根据鼠标移动情况重新排序div对象
var divs = parent.childNodes;
for(var i = 0; i < divs.length; i++){
if(divs[i].tagName != "DIV")
continue;
var obj = divs[i];
var left = obj.offsetLeft;
var top = obj.offsetTop;
var width = obj.clientWidth;
var height = obj.clientHeight;
while(objobj = obj.offsetParent){
left += obj.offsetLeft;
top += obj.offsetTop;
}
// 判断鼠标松开的时候是否在某个div对象的可见区域内,如果为true,则将目标div放置到该div对象的前面
if(left <= mouseX && mouseX <= left+width && top <= mouseY && mouseY <= top+height){
parent.insertBefore(element, divs[i]);
}
}
// 将目标div改回相对定位
parent.style.position = "relative";
parent.style.left = "0px";
parent.style.top = "0px";
parent.style.zIndex = zIndex;
parent.style.backgroundColor = "";
// 删除占位div对象
parent.removeChild(newObj);
};
return true;
}
function openCloseDiv(){
var target = getObj('addchatpicture');
if(target.style.display == 'none'){
target.style.display = 'block';
//element.innerHTML = 'upload pic';
} else {
target.style.display = 'none';
//element.innerHTML = 'hide upload pic';
}
}
var parent = getObj('addchatpicture');
//var parent = element.parentNode;
var zIndex = parent.style.zIndex;
// 获取目标div的左上角坐标
var left = parent.offsetLeft;
var top = parent.offsetTop;
while(parent = parent.offsetParent){
left += parent.offsetLeft;
top += parent.offsetTop;
}
// 复制一个div以占据目标div的起始位置
var newObj = document.createElement("div");
var o=$("#"+parent);
newObj.innerHTML =o.innerHTML;
newObj.className =o.className;
o.insertBefore(newObj,o);
// 将目标div改为绝对定位并赋上初使坐标值
o.css("position","absolute");
o.css("left",left);
o.css("top",top);
o.css("z-Index",9999);
//parent.style.position = "absolute";
//parent.style.left = left;
//parent.style.top = top;
//parent.style.zIndex = 1000;
//parent.style.backgroundColor = "#dddddd";
// 注册事件
if (document.addEventListener) {
document.addEventListener("mousemove", startMove, true);
document.addEventListener("mouseup", stopMove, true);
} else {
document.onmousemove = startMove;
document.onmouseup = stopMove;
}
ee = e || event;
var deltaX = e.clientX - parseInt(o.css.left);
var deltaY = e.clientY - parseInt(o.css.top);
// 开始移动
function startMove(e) {
ee = e || event;
eelement.style.left = e.clientX - deltaX + "px";
eelement.style.top = e.clientY - deltaY + "px";
};
// 停止移动并重新定位
function stopMove(e) {
ee = e || event;
var mouseX = e.clientX;
var mouseY = e.clientY;
// 取消注册的事件
if (document.removeEventListener) {
document.removeEventListener("mousemove", startMove, true);
document.removeEventListener("mouseup", stopMove, true);
} else {
document.onmousemove = "";
document.onmouseup = "";
}
// 根据鼠标移动情况重新排序div对象
var divs = parent.childNodes;
for(var i = 0; i < divs.length; i++){
if(divs[i].tagName != "DIV")
continue;
var obj = divs[i];
var left = obj.offsetLeft;
var top = obj.offsetTop;
var width = obj.clientWidth;
var height = obj.clientHeight;
while(objobj = obj.offsetParent){
left += obj.offsetLeft;
top += obj.offsetTop;
}
// 判断鼠标松开的时候是否在某个div对象的可见区域内,如果为true,则将目标div放置到该div对象的前面
if(left <= mouseX && mouseX <= left+width && top <= mouseY && mouseY <= top+height){
parent.insertBefore(element, divs[i]);
}
}
// 将目标div改回相对定位
parent.style.position = "relative";
parent.style.left = "0px";
parent.style.top = "0px";
parent.style.zIndex = zIndex;
parent.style.backgroundColor = "";
// 删除占位div对象
parent.removeChild(newObj);
};
return true;
}
function openCloseDiv(){
var target = getObj('addchatpicture');
if(target.style.display == 'none'){
target.style.display = 'block';
//element.innerHTML = 'upload pic';
} else {
target.style.display = 'none';
//element.innerHTML = 'hide upload pic';
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货