Hi Aimery,
This is mostly a problem with how jQuery works. As Jongwoo pointed out, the DOM is not created when ng-if=true, and it is hidden when you use ng-show.
jQuery scans the DOM at the DOMContentLoaded event, about the same time angular kicks in. This causes a race condition in your case. Angular is removing/hiding elements. jQuery tries to process all its helpers.
There are only 2 way's out to get this to work reliable.
1. Don't use angular to hide/remove stuff from your page at page load.
2. wrap the needed jQuery plugins into a angular wrapper.
Hope this helps a bit,
Regards
Sander