如何在jquery中取消设置偏移量

时间:2012-05-28 23:22:08

标签: jquery html offset

我遇到了解决元素偏移的问题。这是我在jsfiddle中的代码:http://jsfiddle.net/hhQH2/39/

这是我的代码: HTML:

<div class="div" id="378246"></div>
<div class="promoBook" id="378246"></div>
<div class="availability"><div class="avClose">X</div></div>
<div class='tellme'></div>

CSS:

.promoBook{
margin-top: 100px;
margin-left: 100px;
background: #333;
width: 120px;
height: 45px;
    color: #fff;
}
.availability{
position: absolute;
background: red;
width: 200px;
height: 150px;
    display: none;
}

JQUERY:

//pop up availability 
$(".promoBook").click(function(){
    var btnavail = $(".availability");
    var bookId = $(this).attr("id");
    var btnpos = $(this).offset();

    $(".tellme").text(btnpos.left + btnpos.top);

    //change position of availability div
    btnavail.offset(btnpos);
    btnavail.show();
    $(".avClose").click(function(){
    btnavail.hide();
    btnavail.offset({left:0,top:0});    
    });

    });​

主要问题是它没有删除设置偏移量...它保留旧的偏移量并添加新的偏移量。我希望这是有道理的......任何帮助都将非常感谢!!

1 个答案:

答案 0 :(得分:1)

在jQuery doc中:

  

注意:jQuery不支持获取隐藏元素的偏移坐标或者考虑在body元素上设置边框,边距或填充。

我相信当你想设置它时它是一样的;)

要解决您的问题,只需反转两行close方法:

$(".avClose").click(function(){
    btnavail.offset({left:0,top:0});    
    btnavail.hide();

});