2011-01-30 14 views
1

私はコンテンツスライダを持っています。さらに、 "prev" & "次へ"ボタンを作成しました。アニメーションが完了すると(アニメーションの時間は500ms)、ボタンはクリック可能にする必要があります。私はそれを解決しようとした:アニメーションセレクタが、それは動作しません:アニメーションが動作している限り、jQueryのクリックイベントを停止しようとしています

if (!$(".scrollContainer").is(':animated')) { 
    $(".nextItems a").click(function() { 
     $(".slideNavig").find('a.selected').removeClass('selected').parent().next().find("a").addClass('selected'); 
    }); 
} 
if (!$(".scrollContainer").is(':animated')) { 
    $(".prevItems a").click(function() { 
     $(".slideNavig").find('a.selected').removeClass('selected').parent().prev().find("a").addClass('selected'); 
    }); 
} 

または非常に単純に、私がクリックした後の500msのためのイベントをクリックして、ボタンを停止する必要があります。誰も私を助けることができますか?

+0

メイク結合 '.unbind()'メソッドhttp://api.jquery.com/unbind/ –

+1

@aSeptikを使用し、その後解離した後、再結合が悪いです。旗やチェックを使って、縛られたダンスをするのではなく、イベントを扱うべきかどうかを判断する方がはるかに優れています。 – PetersenDidIt

+0

@PetersenDidIt - そうですよ! –

答えて

4

移動しあれば事はあなたのクリックイベントハンドラ内でアニメーション化されてかどうかを確認する声明:また

$(".nextItems a").click(function() { 
    if (!$(".scrollContainer").is(':animated')) { 
     $(".slideNavig").find('a.selected').removeClass('selected').parent().next().find("a").addClass('selected'); 
    } 
}); 

$(".prevItems a").click(function() { 
    if (!$(".scrollContainer").is(':animated')) { 
     $(".slideNavig").find('a.selected').removeClass('selected').parent().prev().find("a").addClass('selected'); 
    } 
}); 

あなたは完全に乾くことができ、あなたのこのような何かを行うことにより、コードは:

$(".nextItems a").click(function() { 
    nextPrevItem('next'); 
}); 

$(".prevItems a").click(function() { 
    nextPrevItem('prev'); 
}); 
function nextPrevItem(direction) { 
    if (!$(".scrollContainer").is(':animated')) { 
     $(".slideNavig").find('a.selected').removeClass('selected') 
      .parent()[ direction ]() 
      .find("a").addClass('selected'); 
    } 
} 
+0

私はコードの重複を排除するために+1を与えなければなりません。 – user113716

+0

はい、あなたは正しいです! ifステートメントはイベント内になければなりません。しかし、2番目のソリューションはすべてを打ち負かします!すばらしいです!だからあなたはそれをやったのです!どうもありがとう! – Thomas

2

あなたがハンドラ内のif文が必要です。

$(".nextItems a").click(function() { 
    if (!$(".scrollContainer").is(':animated')) { 
     $(".slideNavig").find('a.selected').removeClass('selected').parent().next().find("a").addClass('selected'); 
    } 
}); 

$(".prevItems a").click(function() { 
    if (!$(".scrollContainer").is(':animated')) { 
     $(".slideNavig").find('a.selected').removeClass('selected').parent().prev().find("a").addClass('selected'); 
    } 
}); 
+1

+1また、あなたが私を倒す秒数です。 – lonesomeday

関連する問題