正常に動作する .toggle() メソッドを使用したコードがありましたが、後で .off() メソッドでバインド解除できるように .toggle() を .on('click'..) に置き換える必要がありました。
以下は、toggle() メソッドを使用した最初のコードです。
var befrestorex;
var befrestorey;
var befrestorew;
var befrestoreh;
var toggled =false;
$('#restorebtndiv').toggle(
function(){
befrestorex = $('#windowdiv').css('left');
befrestorey = $('#windowdiv').css('top');
befrestorew = $('#windowdiv').css('width');
befrestoreh = $('#windowdiv').css('height');
windowScrollTopBrestore = $(document).scrollTop()+'px';
console.log(windowScrollTopBrestore);
$('#windowdiv').css({'left':'0px','top':windowScrollTopBrestore,'width':'100%','bottom':'50px','height':'100%'});
},function(){
$('#windowdiv').css({'left':befrestorex,'top':befrestorey,'width':befrestorew,'height':befrestoreh});
});
2 番目のコードは次のとおりです。
var befrestorex;
var befrestorey;
var befrestorew;
var befrestoreh;
var toggled =false;
$('#restorebtndiv').on('click', function(){
console.log("function started ...");
befrestorex = $('#windowdiv').css('left');
befrestorey = $('#windowdiv').css('top');
befrestorew = $('#windowdiv').css('width');
befrestoreh = $('#windowdiv').css('height');
if (!toggled){
toggled=true;
windowScrollTopBrestore = $(document).scrollTop()+'px';
console.log(windowScrollTopBrestore);
$('#windowdiv').css({'left':'0px','top': windowScrollTopBrestore,'width':'100%','bottom':'50px','height':'100%'});
}
else {
toggled=false;
$('#windowdiv').css({'left':befrestorex,'top':befrestorey,'width':befrestorew,'height':befrestoreh});
console.log(toggled);
}
});
ここの "else" では、 $('#windowdiv').css({'left':befrestorex,'top':befrestorey,'width':befrestorew,'height':befrestoreh}); 一致した div には影響しません。最初のコードでは問題なく動作していたので、奇妙です。jquery で div を更新する方法を見つけようとググったところ、.fadeIn('fast') を使用する解決策が見つかりましたが、どちらも機能しませんでした。誰かがアイデアを持っていますか?