ホームページ > ウェブフロントエンド > jsチュートリアル > JQuery スライドショーの小さな問題 (問題の見つけ方と解決方法)_jquery

JQuery スライドショーの小さな問題 (問題の見つけ方と解決方法)_jquery

WBOY
リリース: 2016-05-16 17:42:07
オリジナル
1351 人が閲覧しました
最初の段階では、スライドショーを試してみましょう
ホームページを作成するときに、画像の切り替え効果にスライドショー [1] を使用したいと思いました。コードの js 部分は次のとおりです。
コードをコピー コードは次のとおりです。
function next_slide() {
var $active = $('#bitware-overlay img.active ');
if ($active.length == 0)
$active = $('#bitware-overlay img:last'); next = $active.next().length ? $active.next() : $('#bitware-overlay img:first'); $active.addClass('last-active'); next.addClass('active');
$next.css({opacity: 0.0});
$next.animate({opacity: 1.0}, 1500, function(){
$active.
};
} 🎜>
第 2 段階、問題の発見

ページを開くときの通常のテストでは問題はありませんでしたが、最終的にリーダーは、ブラウザが複数のタブを同時に開いてページに留まった場合に発見しました。タブ内で一定時間表示されていた画像が最初の画像に切り替わり、変更が完了すると突然最後の画像にジャンプします。




コードをコピー

コードは次のとおりです。

function next_slide() {
var $active = $('#bitware-overlay img.active'); if ($active.length == 0) $active = $('#bitware-overlay img:last '); var $next = $active.next().length ? $active.next() : $('#bitware-overlay img:first');アクティブ') ; $next.addClass('active'); $next.css({不透明度: 0.0}); $next.animate({不透明度: 1.0}, 1500); 🎜> $ active.removeClass();
setTimeout("next_slide()", 4000);
}
$(function() {
setTimeout("next_slide()", 4000);
});


他のタブに滞在した後、ページに戻ると、画像が正しい順序で表示され、間隔も 4000 ミリ秒になっていることがわかりました。表示されると、それは直接ジャンプであり、形状もフェードしていません。アニメーションの 1500 ミリ秒はまったく効果がないようです。しばらくすると正常に戻りますが、この現象の持続時間は他のタブに費やした時間の長さに正比例するようです。

第 3 段階、問題の解決

最終的に、その理由が jquery の本質がシングルスレッドであるためであることがわかりました[2]。他のタブに滞在すると、 next_silde() 関数が使用されます。タスクが多すぎることが原因です。 [4] で見つかった最終的な解決策は次のとおりです:




コードをコピー

コードは次のとおりです:

function next_slide () {
var $active = $('#bitware-overlay img.active');
if ($active.length == 0)
$active = $('# bitware-overlay img :last'); var $next = $active.next().length ? $active.next() : $('#bitware-overlay img:first'); .addClass(' last-active'); $next.addClass('active'); $next.css({不透明度: 0.0}); }, 1500, function(){ $active.removeClass(); setTimeout("next_slide()", 4000) }
$(function(); {
setTimeout("next_slide()", 4000);

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート