Ignore the IE issues for now, let's address the title of the ticket, which is "Inconsistency of .end() with respect to .after()"
We need to do something consistent with
.after() to make it behave predictably. The two choices that I saw were that we can either *always* pushStack regardless of the jQuery object contents and incoming arguments, or *never* pushStack.
By our internal convention, any jQuery method that may change the current set always does a pushStack. We're shoehorning two different things into this method: 1) put content after the elements in a set, and 2) put content **into** the set. So the second is a modifying behavior, and whether we do 1 or 2 depended on whether the first element in the set is disconnected, or the set is empty, or there were no arguments, which isn't very consistent at all.
I was proposing that we always pushStack. The original test case is not expecting this. It wants an empty set to be seen as connected and essentially have a no-op effect, but it also wants the sometimes-pushStack behavior to be preserved. That just leaves us differently inconsistent doesn't it? **I'd be totally okay with never-pushStack as well,** but to me some sort of consistency here is important like the title of the ticket says.
Perhaps I've been looking at this too long. Thoughts welcome.