私はdivのオレンジの境界を作るコードを書いていますし、2〜2回黒に変更した後に実際に起こっていることは、ありがとう!jqueryのCSSの変更を遅らせる
コード:
$('#newMessage1').css('border','2px solid #ffa800').delay(100).css('border','2px solid #000000');
私はdivのオレンジの境界を作るコードを書いていますし、2〜2回黒に変更した後に実際に起こっていることは、ありがとう!jqueryのCSSの変更を遅らせる
コード:
$('#newMessage1').css('border','2px solid #ffa800').delay(100).css('border','2px solid #000000');
jQueryのdelay
機能のみfx
キュー(fadeIn
またはslideDown
のような関数)に追加された機能で動作します。 css
は、これらの関数の1つではありません(他の非fx
キューに対応する関数delay
を試してください。どちらも機能しません)。 docsから
:
バージョン1.4でのjQueryに追加、.delay()メソッドは、私たちは、キューにそれに従うの機能 実行を遅延することができます。 標準エフェクトキューまたはカスタムキューを使用できます。キュー内の次のイベントだけが遅延されます( )。例えば、 は、 エフェクトキューを使用しない.show()または.hide()の引数なしのフォームを遅延させません。
jQueryのdelay
は、この場合には、おそらく行くための方法だろうネイティブJS setTimeout
、に代わるものではありません。あなたは、例えば、この(実施例here)のような何かができる:アニメーションがあるように、CSSの変更が影響キューに置かれていないよう
$('#newMessage1').css('border','2px solid #ffa800');
setTimeout(function() {
$("#newMessage1").css('border','2px solid #000000');
}, 1000);
あなたはcss()
とdelay()
を使用することはできません。
代わりに、あなたはsetTimeout
を使用する必要があります:
$('#newMessage1').css('border','2px solid #ffa800');
setTimeout(function() { $('#newMessage1').css('border','2px solid #000000'); }, 1000);
編集:境界線の色をアニメーション化するには、jQueryのUIのコアを含む、あなたが独立して境界線の各側面をアニメーションを確認する必要があります。あなたはこれを行う方法の例を見ることができますhere。
ありがとう!ボーダーをフェードインして他の色にフェードインさせる方法はありますか?ありがとう! – Jake
私はこれを行う方法を含むように私の答えを更新しました。 –
@LukeBennett関数は、[.queue()メソッド](http://api.jquery.com/queue/)を使用して 'fx'キューに追加できます。 –
なぜ、Jqueryで.animate()を使用しないのですか? ただ、デフォルトのボーダーのためのあなたのCSSを設定します。
yourIDまたはクラス { ボーダー:2ピクセル固体#ffa800。 }
そして、あなたのjQueryで:
$( "#yourID")({ '国境': '#000000'}、3000)をアニメーション化。 < ----最後のパラメータはあなたの遅延= 3秒です
@ James-Allardiceと@ Luke-BennetはデフォルトでCSSの変更がfx
キューに追加されていないのは正しいですが、理由はありませんそこに置く。
.queue() methodの2番目の形式では、キューに何かを追加できます。標準fx
キューを使用する必要もなく、独自のキューを作成することもできます。
がありjQueryのドキュメントのページにいくつかの良い例ですが、ここでは特定のニーズを解決する一つだ:
$("#newmessage1").queue(function(){
$(this).css("border", "2px solid #ffa800");
$(this).dequeue();
});
$("#newmessage1").queue(function(){
$(this).delay(500);
$(this).css("border", "2px solid black");
$(this).dequeue();
}
それは醜いと洗練さだが、それはsetTimeout
を使用してより良いかもしれません。
@ BorisDが推奨するように、.animate() methodを使用することをお勧めします。あなたがあなたの元の例で指定された「100」は第二の唯一の10分のこと
$("#newmessage1").css("border", "2px solid #ffa800");
$("#newmessage1").animate({"border": "2px solid black"}, 500);
注:あなたは、組み込みの必要な機能を持っています。私の例では0.5秒です。
参照:http://stackoverflow.com/questions/5396119/using-jquery-delay-with-css/35057342#35057342 –