Bug Tracker

Opened 10 years ago

Closed 9 years ago

#10270 closed bug (fixed)

(any) attribute selector does not match if value contains '\'

Reported by: [email protected] Owned by: timmywil
Priority: low Milestone: 1.next
Component: selector Version: 1.6.3
Keywords: Cc:
Blocked by: Blocking:

Description

If an attribute selector value contains '\', it will never match. For instance, given the following input DOM:

<message xmlns='jabber:client'
                 type='groupchat'
                 from='some\[email protected]/juliet'
                 to='[email protected]/garden'>
  <body></body>
</message>

The following selector fails with 1.6.3 (but works with 1.4.4):

$(dom.ownerDocument).find("message[from^='some\[email protected]']")
  • jQuery-1.6.3: returns []
  • jQuery-1.4.4: returns [dom]

Also tried "=", "*=", "~=", "$=", and "|=" with the same results ("!=" with jQuery-1.6.3 returning [dom] and 1.4.4 returning []).

Change History (7)

comment:1 Changed 10 years ago by [email protected]

It appears that the various preFilter functions unconditionally remove '\' from all parts of the expression, regardless of what follows or in what part of the expression it is.

comment:2 Changed 10 years ago by [email protected]

Sorry, forgot to add platforms affected:

  • Chrome 13
  • Safari 5.1
  • Firefox 6
  • IE 8
  • IE 9

comment:3 Changed 10 years ago by addyosmani

Component: unfiledselector
Owner: set to [email protected]
Priority: undecidedlow
Status: newpending

Thanks for submitting a ticket to the jQuery bug tracker. Could you kindly also submit a complete test case on jsFiddle.net that reproduces all of the behaviour you've described? If you can ensure that it covers any of the cases you've mentioned this will make it easier for us to evaluate and confirm the issue across multiple browsers before we discuss how to correct it.

comment:4 Changed 10 years ago by [email protected]

Status: pendingnew

jsFiddle test case at <http://jsfiddle.net/HFx3e/1/>.

Also, a potential patch to Sizzle available at <https://github.com/jquery/sizzle/pull/72>.

comment:5 Changed 10 years ago by timmywil

Milestone: None1.next
Status: newopen

comment:6 Changed 9 years ago by timmywil

Owner: changed from [email protected] to timmywil
Status: openassigned

comment:7 Changed 9 years ago by timmywil

Resolution: fixed
Status: assignedclosed

Update Sizzle: fixes a bug dealing with backslashes in selectors. Fixes #10270.

Changeset: 868a9cea08579ae635ce258aed3062705a8d2379

Note: See TracTickets for help on using tickets.