0

要素のオフセットの設定を解除する際に問題が発生します。これが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});    
    });

    });​

主な問題は、設定されたオフセットを消去していないことです...古いオフセットを保持し、新しいオフセットを追加します。私はこれが理にかなっていることを願っています..どんな助けでも大歓迎です!!

4

1 に答える 1

1

jQueryドキュメント:

注:jQueryは、非表示要素のオフセット座標の取得や、body要素に設定された境界線、マージン、またはパディングの考慮をサポートしていません。

設定したいときも同じだと思います;)

問題を解決するには、closeメソッドの2行を逆にします。

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

});
于 2012-05-28T23:33:20.397 に答える