Bug Tracker

Opened 8 years ago

Closed 7 years ago

#10270 closed bug (fixed)

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

Reported by: mamille2@… 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\20room@conference.example.com/juliet'
                 to='romeo@montegue.net/garden'>
  <body></body>
</message>

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

$(dom.ownerDocument).find("message[from^='some\20room@conference.example.com']")
  • 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 8 years ago by mamille2@…

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 8 years ago by mamille2@…

Sorry, forgot to add platforms affected:

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

comment:3 Changed 8 years ago by addyosmani

Component: unfiledselector
Owner: set to mamille2@…
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 8 years ago by mamille2@…

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 8 years ago by timmywil

Milestone: None1.next
Status: newopen

comment:6 Changed 7 years ago by timmywil

Owner: changed from mamille2@… to timmywil
Status: openassigned

comment:7 Changed 7 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.