だから私はギャラリーで N 個の画像を取り、アコーディオンのような div にそれらを広げるために書いたスクリプトを持っています。スクリプトはデスクトップやほとんどのモバイル デバイスでうまく機能しますが、何らかの理由で iPad は私に非常に腹を立てています。約 70% の確率で、アニメーションがハングして完全に停止します。
これらはiPadからの2つのスクリーングラブです。毎回同じ場所にぶら下がるわけではありません
もちろん、画像は均等に配置されているはずですが、アニメーションはここで停止しています。iPad自体は反応が良く、Safariで問題なくタブを切り替えることができます。
私はもともとセレクターをキャッシュしておらず、each() ループを実行してすべての div.galleryItem を通過していましたが、キャッシュされたセレクターに切り替えると、少しうまく機能しますが、それでもハングします。
起動時に呼び出される私のJavaScriptは次のとおりです。
function activateGallery() {
var n = $('.galleryItem').size(); //number of images in gallery
var o = Math.round(100/n); //percent to push each image to the left
var os = 0; //current amount of space on the left
var z = 1; //z-index
var d = 0; //duration of animation
$('#totalSlides').empty().html(pad(n));
//clean up any open controls
$('.galleryItem.active > .imageInfoCondensed > .toggle').fadeOut();
//deactivate active slide if we have one
$('.galleryItem.active').removeClass("active");
//NEW ALIGN LOOP WITH CACHED SELECTORS
var galItems = new Array();
var galImages = new Array();
var eq;
//assign selectors - 1 indexed
for (i=1;i<=n;i++) {
eq = i - 1;
galItems[i] = $('.galleryItem:eq(' + eq + ')');
galImages[i] = $('.galleryImage:eq(' + eq + ')');
}
//loop again to spread images
for (i=1;i<=n;i++) {
galItems[i].animate({
"marginLeft": os + "%"
},d).css("zIndex", z);
os = os + o;
z++;
d = d + 200;
}
//adjust margins to center pictures
$(".galleryImage").animate({
"marginLeft": "-35%"
},500);
$('.imageInfoCondensed').delay(d).slideDown(400);
$('.galleryItem').removeClass("noBorder");
}
おそらく私はセレクターを正しくキャッシュしていませんか?私はここで途方に暮れているので、どんな洞察も本当に役に立ちます!