この質問は、私が多くの実用的な関連性を持っていることに興味をそそられました。私はOP自身の答えが好きですが、コンテナー上の単一のメソッドチェーンを使用して、宣言的に(そしてより直感的に)実行できると思いました。だから私はこれまでそれを調理しました:
$("#container div").each(function () {
$(this).toggleClass('rightMost',
$(this).is(':last-child') ||
$(this).position().left >= $(this).next().position().left
);
});
最後の要素でnullを返すため.next()
、条件を最後の要素にも渡す必要があります。.is(':last-child')
また、コンテナは1つの要素に対して十分な幅しかない場合があるため(この場合、すべてを右端としてマークする必要があります)、現在の要素のposition()。leftがそれ以上の場合に条件が適用されます。 .next()の。
http://jsfiddle.net/mhfaust/TdXZJ/で、ドキュメント対応とウィンドウサイズ変更の両方で起動される機能とラップされた機能を確認できます。
更新
必要な効果が次のようにクラス名を適用/削除するだけではない場合は、条件をより一般的に適用できます(ただし、少しエレガントではありません)。
$("#container div").each(function () {
if($(this).is(':last-child') || $(this).position().left >= $(this).next().position().left)){
// do one thing...
}
else{
// ... or do the other.
}
});