おはようございます :) ここで問題が発生しました。すでに 2 日間首が痛いのです。ページ上でスライドする画像に bxSlider を使用しており、onAfterSlide コールバックで独自の関数を呼び出しています。1つのことを除いて、すべてが正常に機能します。スライドをすばやく切り替えると、関数が 2 ~ 3 回呼び出されます (ページに 3 つの画像があります)。これは、予期しない結果を返すため良くありません。マークアップが変更されたため、bxSlider の最新バージョンを使用できません。onAfterSlide コールバックが呼び出されたときにアニメーションがまだ終了していないため、これが発生すると思います。これは私が bxSlider を呼び出す方法です:
$('#slider_bx').bxSlider({
mode: 'fade',
speed: 1000,
pause: 9000,
auto: true,
autoControls: false,
prevText: '',
nextText: '',
autoHover: true,
captions: false,
pager: true,
onBeforeSlide: function () {
if ($('.slide_in').length) {
$('.slide_in').hide();
}
},
onAfterSlide: function () {
if ($('.slide_in').length && $('.slide_in').is(':hidden')) {
doCrazyStuff();
}
}
});
そして、これは私の機能です:
function doCrazyStuff() {
var $this = $('.slide_in');
if ($this.length > 0) {
setTimeout(function () {
$this.show();
$this.rotate({
duration: 2000,
angle: 90,
animateTo: -20
});
}, 3000);
}
}
どんな助けでも感謝します。ありがとう。
編集:
を追加しようとしまし.stop()
たが、役に立ちませんでした。
$this.show().stop();
$this.stop().show();
$this.stop().rotate({
duration: 2000,
angle: 90,
animateTo: -20
});
$this.rotate({
duration: 2000,
angle: 90,
animateTo: -20
}).stop(); // throws an error