jQuery.eachでbreakを行う

jQueryはとても便利です。もうこれなしではJavaScriptを書くことはできないくらい便利です。というわけで、日夜jQueryをいじくることになるわけですが、たまに自分の想定外の挙動をすることがあります。(要は仕様を十分把握できていないと言うことです(ーー;))

たまたまjQueryで取得した要素をループで特定するという処理を書いていたのですが、ちょっと急いでいることもありフィルタ書けたりするわけではなく

[js]

$('#selector option').each(function(){...})

[/js]

という感じで処理を書きました。いわゆるフィルタを書けて必要な情報を取得したかったわけですが、必要な情報が取得できた段階でループを抜けるようにbreak処理を追加しましたがどうにもうまく動作しませんでした。

Lazyロードでたかだか10から20程度の要素に対する処理なのでそのままでもよい気もしたのですが、不明なところを放置するのがいやだったので調べてみたところbreak文に相当する処理を行う場合にはfalseを返す必要があるとのことでした。

[js]

return false

[/js]

繰り返し処理中にループを抜けたい場合(一般的なループ処理で言うところのbreak)、コールバック関数でfalseを返すことで実装できます。それ以外の値を返した場合は、無視されます。

jQuery.each(object, callback) - jQuery 日本語リファレンス

jQuery は便利ですが、自分の日常的な感覚と異なる事は当然あるわけで、こういったことは一つ一つ把握していかないといけないですね。

おすすめ書籍