Bug Tracker

Opened 15 years ago

Closed 15 years ago

Last modified 14 years ago

#110 closed bug (fixed)

Multiple Attribute Selectors Broken

Reported by: john Owned by:
Priority: major Milestone: 1.0
Component: core Version: 1.0
Keywords: Cc:
Blocked by: Blocking:


I was having trouble with the form plugin and while debugging I discovered that quotes are necessary when selecting by attribute values * if * the selection contains more than one item.

The following test page shows this more clearly:

<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.0 StrictEN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <script type="text/javascript" src="jquery-v164.js"></script> <script type="text/javascript">

$(document).ready(function() {

alert("with quotes: "


alert("w/o quotes: "



</script> </head><body><div> <form><div>

<input type="text" name="t" /> <input type="hidden" name="h" />

</div></form> </div></body></html>

The first alert shows 2, the second alert shows 0. However the following lines will both correctly alert 1:

alert("with quotes: " +$("input[@type='hidden']").size()); alert("w/o quotes: " +$("input[@type=hidden]").size());

So there is either a bug in the selection logic (if quotes are not meant to be required) or in the form plugin which does this:

$("input[@type=submit],input[@type=image]", this)

This W3C page says "Attribute values must be identifiers or strings" so it seems the quotes should be optional for simple names. http://www.w3.org/TR/css3-selectors/#attribute-selectors

It looks like the problem is here in .filter():

Look for something (optionally) enclosed with quotes .replace( 'Q', " *'?"?(['"]*)'?"? *" ), "i" );

I think the ['"]* part of the regexp is eating up too much of the selector string.

Change History (1)

comment:1 Changed 15 years ago by john

Resolution: fixed
Status: newclosed

Resolved in SVN rev 206.

Note: See TracTickets for help on using tickets.