#10812 closed bug (fixed)
passing empty object to .before() or .after() throws exception in IE7
| Reported by: | anonymous | Owned by: | dmethvin |
|---|---|---|---|
| Priority: | high | Milestone: | 1.7.1 |
| Component: | manipulation | Version: | 1.6.4 |
| Keywords: | Cc: | ||
| Blocked by: | Blocking: |
Description
The following line:
$( '.hlist dl dl, .hlist ol ol, .hlist ul ul' )
.before( '( ' ).after( ') ' );
Throws an exception in IE7 if the the query returns empty, passing null to before() and .after(). IE8 and other browsers does not have this problem.
Change History (8)
comment:1 Changed 10 years ago by
| Owner: | set to anonymous |
|---|---|
| Status: | new → pending |
comment:2 follow-up: 3 Changed 10 years ago by
| Status: | pending → new |
|---|
Adding jFiddle: http://jsfiddle.net/5m6et/
comment:4 Changed 10 years ago by
| Component: | unfiled → manipulation |
|---|---|
| Milestone: | None → 1.next |
| Priority: | undecided → high |
| Status: | new → open |
Confirmed. http://jsfiddle.net/5m6et/4/
comment:5 Changed 10 years ago by
| Milestone: | 1.next → 1.7.1 |
|---|---|
| Owner: | changed from anonymous to dmethvin |
| Status: | open → assigned |
It's actually failing everywhere, you can see the console error thrown by Sizzle.error in Chrome for example. It's a simple fix so I'll get it now.
comment:6 Changed 10 years ago by
I discovered indeed it happens in all browsers. The problem is in combination with the text passed ("( "). Passing "<span>( </span>" instead does not fail.
comment:7 Changed 10 years ago by
It appears to happen on any combination of characters (brackets and operators) that have any meaning in javascript. "*" is especially fun... .append() and .prepend() are not affected.
The best fix is to not do anything when applied to null.
comment:8 Changed 10 years ago by
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
Fix #10812, let .before() and .after() work on empty collections.
Changeset: dd845a2c0f63f97e74e4d490ee66e12e0bf180c5

Thanks for taking the time to contribute to the jQuery project! Please provide a complete reduced test case on jsFiddle to help us assess your ticket!
Additionally, be sure to test against the jQuery Edge version to ensure the issue still exists. To get you started, use this boilerplate: http://jsfiddle.net/FrKyN/ Open the link and click to "Fork" (in the top menu) to get started.