LoginSignup
1
0

More than 5 years have passed since last update.

Riotでイベントの最中にエレメントを消した場合の挙動

Posted at

Riot.jsなどのJavaScriptフレームワークを使うと、簡単に要素を出したり消したりできます。ただ、時にはそれでややこしい現象になることもあります。

イベントが…うまく伝わらない

Riotで作ったモジュールで、「確認済み - 未確認」の状態を制御するものを作っていました。

  • 確認ボタンは未確認の状態でだけ出る
  • 確認ボタンは<button type='submit'>になっていて、押したら確認フラグをセットしてあとはフォーム送信に任せる

というような形となっていました。ところが、この確認ボタンを押すと、確認フラグをセットしてボタンを消す…ところまでは動くのですが、ブラウザによってその後に送信されるかされないかが違ってくる、という状況になってしまいました。

原因

どうやら、「イベントを送ったエレメントをイベント中に削除した場合」にどうなるかが、ブラウザによって違ってくるようでした。あるブラウザでは「そのままイベントが上まで伝わる」、別なブラウザでは「削除した段階でイベントが止まる」というようになっていたのです。

ということで、イベントを上まで波及させる必要のあるエレメントは、ifでエレメントごと削除してしまうのではなく、display: noneで表示だけ消す、という処置を取るほうが適当なようです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0