> $icon.toggleClass('icon-double-angle-up', !isClosed)

おお、なるほど。

> jsがスタイルに依存するのあまり好きじゃなくて。

おっしゃるとおり。同感です。
今までは「スマートな書き方がパっと浮かばん。あとで考える！」って感じで手抜いてました、すいません。。。
上の方の`iconBottomPos = if isClosed then '110px' else '5px'`のpx直指定とかもそう。

data属性かー、なるほど。
「jsがスタイルに依存するのは好きじゃない」ってのは強く同感なんだけど、
自分の中でまだ切り分けが明確にできないかも。

クラス名をdataに持たせると確かに分離できて、
例えば違う見せ方にしたいときでもdataで指定したクラス名を変えればいい、
というのは分かる。

ただ以下の点が気になる。
* data属性が増えそう(そういうものか？)
* 依存性が変わる(だから何なのっていう気もするけど)
 * 現コードだと`js <-> css`な感じだけどdata属性版だと`html <-> css <-> js`みたいな印象を受ける
* 要素のdata取得処理が走るけど非効率だったりしないか？
  * 常に同一要素から取得する場合はキャッシュされるかもしれんが、photoのように動的に追加されるような場合
  * もちろん常に速度を優先するわけじゃないけど

data属性が嫌っていうわけじゃなくて、「どうあるべきか」ってのが自分の中で弱いっていう話。
どこまでがスタイルで、どこからが振る舞いなのかという切り分けが曖昧ってことかな。
「クラス名を直接jsに書く=スタイルに依存している」ということになるのだろうかみたいな。
「(イベント時に)どういうスタイルにするか」は振る舞いの一つであってjsの責務になるのではみたいな。
なんか参考になるサイトか書籍ないかなｗ

でも書きだして思ったけど「利点は分かるけどなんか違和感が残る」ってだけなようにも見えるので、
単なる慣れなのかもしれない。