Remove popover content with .children().detach() instead of .empty()

Using .empty() is bad because it blows up the content. If you're planning on using it later or swapping it around, you can't. jQuery won't let you reattach the content or rewire events to it. Instead, do .children().detach().

This is a refinement of the fix in #13165.
No need to split this up into separate lines, you can use `.end()` after the `.detach()` and get the original set back.