KANTENNA.COM

Solarized

HOME > WEBプログラム覚書 > [jQuery]こんな機能があったんだ。jQuery stop()

[jQuery]こんな機能があったんだ。jQuery stop()

Buttons like Windows 7 with JS & CSS」を見てて

Javascript
  1.  el.win7BG.stop().animate({'opacity':1},300);

って記述あったので調べてみたらstop()って色々使えるんですね。 全然しらなかったです。

stop([clearQueue], [gotoEnd])

引数は2つ。何も指定しないとfalse

[clearQueue]がtrueの場合、持っているキューが全て削除される。[gotoEnd]はtrueにすると現在のアニメーションの最後のコマへジャンプする。

いまいちわからなかったのでテスト。

テストコード

マウスオーバーすると横幅が広がり、縦に伸びるアニメーションを作成する。

Javascript
  1.  var li_width = {_min: '50px', _max: '400px'};
  2.  var li_height = {_min: '20px', _max: '100px'};
  3.  var li_style = {width: li_width._min, height: '20px', display: 'block', margin: '0px'};
  4.  var li_colors = ['#20B7F2', '#3086A3', '#022037'];
  5.  
  6.  $('#JQStopTest li').each(function(i){
  7.   li_style.backgroundColor = li_colors[i];
  8.   $(this).css(li_style).hover(function(){
  9.   $(this).animate({width: li_width._max}).animate({height: li_height._max});
  10.   }, function(){
  11.   $(this).animate({width: li_width._min}).animate({height: li_height._min});
  12.   });
  13.  });
HTML
  1.  <div id="JQStopTest">
  2.  <ul>
  3.  <li>&nbsp;</li>
  4.  <li>&nbsp;</li>
  5.  <li>&nbsp;</li>
  6.  </ul>
  7.  </div>

stop()なし

stop()がない場合、当然ながらキューが削除されないので イベントが発生した回数分だけ実効される。

  •  
  •  
  •  
Javascript
  1.  $('#JQStopTest1 li').each(function(i){
  2.   li_style.backgroundColor = li_colors[i];
  3.   $(this).css(li_style).hover(function(){
  4.   $(this).animate({width: li_width._max}).animate({height: li_height._max});
  5.   }, function(){
  6.   $(this).animate({width: li_width._min}).animate({height: li_height._min});
  7.   });
  8.  });
HTML
  1.  <div id="JQStopTest1">
  2.  <ul>
  3.  <li>&nbsp;</li>
  4.  <li>&nbsp;</li>
  5.  <li>&nbsp;</li>
  6.  </ul>
  7.  </div>

stop(false, false)

デフォルトではfalseとなっている。 一瞬だけマウスオーバーした場合、マウスアウトした時点で現在のアニメーション(横の変化)を停止。 [clearQueue]がfalseのためキュー(縦の変化)が存在するので次のキュー(縦の変化)に移行する。

  •  
  •  
  •  
Javascript
  1.  $('#JQStopTest2 li').each(function(i){
  2.   li_style.backgroundColor = li_colors[i];
  3.   $(this).css(li_style).hover(function(){
  4.   $(this).stop().animate({width: li_width._max}).animate({height: li_height._max});
  5.   }, function(){
  6.   $(this).stop().animate({width: li_width._min}).animate({height: li_height._min});
  7.   });
  8.  });
HTML
  1.  <div id="JQStopTest2">
  2.  <ul>
  3.  <li>&nbsp;</li>
  4.  <li>&nbsp;</li>
  5.  <li>&nbsp;</li>
  6.  </ul>
  7.  </div>

stop(false, true)

[gotoEnd]がtrueの場合、途中で中断した場合でも現在のアニメーションの最終コマに移動する。 一瞬だけ、マウスオーバーした場合、上記と違い横幅がMAXまで伸びる。 あとは同じく、残っているキュー(縦の変化)が実行される。

  •  
  •  
  •  
Javascript
  1.  $('#JQStopTest3 li').each(function(i){
  2.   li_style.backgroundColor = li_colors[i];
  3.   $(this).css(li_style).hover(function(){
  4.   $(this).stop(false, true).animate({width: li_width._max}).animate({height: li_height._max});
  5.   }, function(){
  6.   $(this).stop(false, true).animate({width: li_width._min}).animate({height: li_height._min});
  7.   });
  8.  });
HTML
  1.  <div id="JQStopTest3">
  2.  <ul>
  3.  <li>&nbsp;</li>
  4.  <li>&nbsp;</li>
  5.  <li>&nbsp;</li>
  6.  </ul>
  7.  </div>

stop(true, false)

JQStopTest2と同じで一瞬だけマウスオーバーしてマウスアウトした場合、[gotoEnd]がfalseのため横の変化が途中で止まる。 [clearQueue]がtrueの場合、持っているキュー(縦の変化)も削除されるので縦に変化するアニメーションは実行されない。

  •  
  •  
  •  
Javascript
  1.  $('#JQStopTest4 li').each(function(i){
  2.   li_style.backgroundColor = li_colors[i];
  3.   $(this).css(li_style).hover(function(){
  4.   $(this).stop(true, false).animate({width: li_width._max}).animate({height: li_height._max});
  5.   }, function(){
  6.   $(this).stop(true, false).animate({width: li_width._min}).animate({height: li_height._min});
  7.   });
  8.  });
HTML
  1.  <div id="JQStopTest4">
  2.  <ul>
  3.  <li>&nbsp;</li>
  4.  <li>&nbsp;</li>
  5.  <li>&nbsp;</li>
  6.  </ul>
  7.  </div>

stop(true, true)

両方trueの場合。 一瞬だけマウスオーバーしてマウスアウトした場合、現在のアニメーション(横の変化)は最後のコマにジャンプするが、 縦の変化のキューはクリアされてるため実行されない。

  •  
  •  
  •  
Javascript
  1.  $('#JQStopTest5 li').each(function(i){
  2.   li_style.backgroundColor = li_colors[i];
  3.   $(this).css(li_style).hover(function(){
  4.   $(this).stop(true, true).animate({width: li_width._max}).animate({height: li_height._max});
  5.   }, function(){
  6.   $(this).stop(true, true).animate({width: li_width._min}).animate({height: li_height._min});
  7.   });
  8.  });
HTML
  1.  <div id="JQStopTest5">
  2.  <ul>
  3.  <li>&nbsp;</li>
  4.  <li>&nbsp;</li>
  5.  <li>&nbsp;</li>
  6.  </ul>
  7.  </div>

トラックバック(3)

2011年2月14日 02:14

slideUp、slideDownでstop()を上手く動作させる方法学びログ

 例えば、こんなコードを書いたとします。 $(~~).mouseover(function(){ $(this).slideDown("fast") ...続きを読む

2011年12月 9日 01:55

[jQuery] jQuery入門前の話。WEBプログラム覚書

jQuery APIリファレンスをみて、jQuery.each()とjQuery(selector).each()のような同じ名前のメソッドで何が違うんだ...続きを読む

2011年12月12日 11:25

[jQuery] もう+演算子とはおさらば。jQuery TemplatesWEBプログラム覚書

jQueryに1年以上前から公式なテンプレートエンジンがあった件続きを読む

コメント

コメントする
Name
Email Address
URL
TIME LINE
2012
02.08

[Ubuntu11.10]Winows XPユーザーがUbuntuを使ってみて

Windows XPとUbuntuのデュアルブート環境にしてみておもったこと。

2012
02.03

[jQuery]closest()とparents()

今から16年前Netscapeブラウザのソースコードの公開方法の会議の中で、初めてオープンソースという言葉が使われた今日、 みなさんいかがお過ごしでしょうか。

今回の投稿はそれとは関係のないjQueryのparents()とclosest()が 似てたので何が違うのか試した時のメモです。

2012
02.01

[jQuery Mobile]初期化イベントメモ

jQuery Mobileは読み込まれてから

mobileinit -> pagebeforecreate -> pagecreate -> pageinit

の順番でイベントが発生する。

2012
02.01

[WordPress]管理画面のフッタのフィルタとアクション。

時間も時間なので、あまり使用頻度の高くない微妙なネタを。

会員制サイトなどで不特定多数の人にログインさせる場合、フッタのバージョン情報は隠しておきたかったり、 こじゃれたメッセージを表示したいときとか使うアクションとフィルタ。

2012
01.28

[WordPress] ブログの情報を取得する方法とノーキャッシュ疑惑

ブログのget_bloginfo()で取れないデータが必要な場合に使うもの。

2012
01.26

[jQuery Mobile]ダイアログ

jQuery Mobileにおけるダイアログの扱いはウインドウではなくページ。 なので通常のページと同様に扱える。ダイアログウインドウを出す。じゃなくダイアログページに遷移する。的な。

2012
01.25

[Ubuntu11.10]Ubuntuのインストール後の設定

インストール完了後の環境構築。PC起動時いちいちBIOSからブートドライブ選んで ブートするのかと思ってたら起動時にOS選択画面が出てくる。

すばらしいですね。

2012
01.24
2012
01.23

MinGW+Mintty+Git

MinGW+Mintty+Gitをやろうとして失敗に終わった。このエントリーには収穫できるものはありません。