jQueryの.offset() を使うとiPhoneやiPadでずれるバグを解消したい
jQueryの.offset() を使うと正確なロケーションが取得できないケースがあるようです。
その場合はネイティブなJavaScriptの.offsetを使うと解消され、正しい挙動となります
改善前
$('.anc').click(function(e){ e.preventDefault(); var offset = $('#targetId01').offset(); var y = offset.top; scrollTo(0,y); }); });
改善後
$('.anc').click(function(e){ e.preventDefault(); var y = document.getElementById('targetId01').offsetTop; scrollTo(0,y); }); });
jQueryの開閉式コンテンツ(完全版)
以前ご紹介した開閉式パネル
jQueryでFAQなどの開閉式パネルを実装したい - dentaq log
これをずっと使い続けてきたのですが、場合によって開閉が連動してしまうなど、
挙動がおかしくなることがありました。
これを解消したのが下記の記述です
<dl> <dt class="show-hide">○○について</dt> <dd>○○とは、・・・・</dd> <dt class="show-hide">××について</dt> <dd>××とは、・・・・</dd> </dl>
$('dt.show-hide').each(function(i){ $('dt.show-hide').eq(i).click(function(){ if($('+dd','dt.show-hide').eq(i).css('display') =='none') $('+dd','dt.show-hide').eq(i).slideDown('slow'); else $('+dd','dt.show-hide').eq(i).slideUp('slow'); }); });