■違い
.remove():指定したDOM要素自体を削除する。
.empty() :指定したDOM要素の”子要素のみ”を削除する。
■失敗例
他の人が書いたコードで、ダイアログで表示させた要素の閉じるボタンをクリックしたときに、要素は”見た目的には”消えるのだけど、その裏側のボタンが押せなくなるバグが出ていた。
jsをよく見ると、要素を消す時に.empty()を使っていた。
.empty()だと見た目上消えていても、装飾されていないdivなどで見えない要素が残っていると裏側の要素の操作ができなくなったり、もう一度ダイアログ表示しようとすると無限に生成されたり、表示がおかしくなったりする。(もちろん使い方次第ですが。)
jqueryで要素を消す際は基本.remove() を使ったほうがすっきるすると思う。
■参考記事
「jQuery removeとemptyによるDOM要素削除方法の違い」
http://kojikoji75.hatenablog.com/entry/2014/05/20/214503