$.eachのループを途中で止める (軽めのjQuery Advent Calendar 2012 7th day)
Posted: Updated:
$.each
を回して途中で止める
$.each
はたとえば複数の要素を示すjQueryオブジェクトをループして、ひとつひとつに対して処理を適用することができます。jQueryプラグインなぞを開くと、かなりの高確率で使用されている人気のAPIです。
そんな$.each
は、return false
でいわゆるbreak
(中断)をすることができます。知ってると便利かも、ぐらいの軽いおはなし。
- orange
- pineapple
- apple
たとえばこのようなコードでは、orange・pineapple・appleの順に並んだ要素をループして検査し、pineappleであれば、ループを止めてそうでなければ背景に色をつけています。この例で期待される動作は、最初のorangeだけに色がつくのが正しいです。
実行結果は以下
こんな感じになります。期待通りの動作ですね。
do Zepto?
比較対象にZepto.jsを出してみました。do Zeptoをすると、同じ処理をZeptoで行います。
Zepto.jsは、jQueryとほとんど同じAPIをもった軽量互換ライブラリです
挙動が違うのが分かるでしょうか? jQueryがreturn false
で中断されるのに対して、Zeptoはreturn true
だろうとreturn false
だろうと、途中でreturn
したときは単純に次のループに進みます。
これはjqMobiも同様で、jQuery互換ライブラリを標榜する連中が、実はてきとーなところで互換性を端折っている典型例でしょう。
おしまい
途中で寄り道しちゃいましたが、広義のjQueryということで!
以上、軽めのjQuery Advent Calendar 2012の7日目でした〜。