これを試して:
if ($('.innerslide').css("left") == 0) {
$('div.backarrow').hide();
} else {
$('div.backarrow').show();
}
ダブルクリックの問題の修正:
訪問者がダブルクリックしたときの問題についてのコメントで説明したことから、ダブルクリックによって 2 つのアニメーション イベントが発生しているように聞こえます。これが起こらないようにするには、アニメーションの実行中にクリック ハンドラーを無効にし、終了したら再度有効にするか、要素の位置を継続的にチェックする新しいスレッドを作成してみてください。これらの解決策の 1 つは良い考えではありません - 私はあなたにどちらを理解させます :) - しかし、もう 1 つは実際には非常に単純な解決策であり、既存のコードをほとんど変更する必要はありません (実際には、オーバーヘッドをわずかに削減する可能性があります)。額):
$('.nextcol').on("click.next", function() {
$('.innerslide').animate({'left': '-=711px'}, 1000, showHideBack());
$(this).off("click.next");
});
$('.prevcol').on("click.prev", function() {
$('.innerslide').animate({'left': '+=711px'}, 1000, showHideForward());
$(this).off("click.prev");
});
次に、この行を次の行に追加します(それを使用している場合は、これshowHideBack()
を補完する行を追加します):showHideForward()
$('.nextcol').on("click.next".....
各クリック ハンドラーを設定する関数と、それぞれを削除する別の関数を作成することをお勧めします。これにより、ライブが非常に簡単になり、アニメーションの実行中に不要なクリック ハンドラーが削除されるため、ソリューション全体でオーバーヘッドが削減されます。
注:animation
メソッドは、アニメーションが終了する前にコールバックを呼び出すことがよくあります。delay
そのため、メソッドを呼び出す前にa を使用したい場合がありますshowHide...
。
ご不明な点がございましたら、お知らせください。幸運を!:)
アップデート:
これは、すべてのバグが解決された、あなたが私にくれたフィドルの更新版です。元のソリューションであなたの目標の一部を誤解していたようですが、ここで修正しました。更新された jQuery もここに含めました。
var speed = 1000;
var back = $("div.backarrow");
var next = $(".nextcol");
var prev = $(".prevcol");
var inner = $(".innerslide");
function clickNext(index) {
next.off("click.next");
inner.animate({
'left': '-=711px'
}, speed, function() {
back.show(); //this line will only be hit if there is a previous column to show
next.delay(speed).on("click.next", function() {
clickNext();
});
});
}
function clickPrev() {
prev.off("click.prev");
inner.animate({
'left': '+=711px'
}, speed, function() {
if (inner.css("left") == "0px") {
back.delay(speed).hide();
prev.delay(speed).on("click.prev", function() {
clickPrev();
});
} else {
back.delay(speed).show();
prev.delay(speed).on("click.prev", function() {
clickPrev();
});
}
});
}
next.on("click.next", function() {
clickNext();
});
prev.on("click.prev", function() {
clickPrev();
});
前回のコラムを見ているかどうかをチェックする条件も入れようと思ったのですが、最終的な実装がどうなるか分からないので、適用できるかどうかわかりませんでした。いつものように、これについて助けが必要な場合や説明が必要な場合はお知らせください。:)