日期:2014-05-16  浏览次数:20970 次

JQUERY获取空间的left和top,弹出DIV层,点击取消关闭后,再次点击top和left不准确了。
显示div部分:

var txt=$("#"+vt).offset();
var txtop=txt.top;
var txleft=txt.left;
$("#repro0up").offset({top:txtop+10,left:txleft+136});
$("#repro0up").fadeIn(1000);


取消关闭div部分:

$("#repro0up").offset({top:0,left:0});
$("#repro0up").hide();


上面这段 我这调试 第一次点击 div的位置是正确无误的 可是当我取消,然后再次点击显示DIV层的时候,这时候的位置就和第一次的不一样了。。。

望高人指点 谢谢~~


------解决方案--------------------
$("#repro0up").offset({top:0,left:0});


没必要家这句话
------解决方案--------------------
var txt=$("#"+vt).offset();

这个节点是随着你的reproOup变化的?
如果你的txt这个节点不是变化的,那应该不会出现你所说的这个问题。
还有如果是变化的,可以定义一个全局的变量,记住第一次的位置,以后就用这个变量来存储就OK了

var txtop=0;
var txleft=0;
function show(){
if(txtop != 0 && txleft !=0){
   // 这里只要记住一次就OK了,以后就全部都用这个top和left,他就不会变化了
   var txt=$("#"+vt).offset();
   txleft = txt.left;
   txtop = txt.top;
}
$("#repro0up").offset({top:txtop+10,left:txleft+136});
$("#repro0up").fadeIn(1000);
}
取消关闭div部分:

$("#repro0up").hide();

------解决方案--------------------
贴你的代码全来测试下,应该代码有问题。。
------解决方案--------------------

$("#repro0up").offset({top:xtxtop+10,left:xtxleft+136});

// 改为
$("#repro0up").css({top:xtxtop+10,left:xtxleft+136});