Commit c2092481 authored by John Resig's avatar John Resig

Added Yehuda's selector engine improvements (it's now trivial to add in your...

Added Yehuda's selector engine improvements (it's now trivial to add in your own parse expressions). Additionally, I fixed a bug in the test suite.
parent 37ee2df8
...@@ -396,7 +396,7 @@ test("expressions - attributes", function() { ...@@ -396,7 +396,7 @@ test("expressions - attributes", function() {
t( "Attribute Ends With", "a[@href $= 'org/']", ["mark"] ); t( "Attribute Ends With", "a[@href $= 'org/']", ["mark"] );
t( "Attribute Contains", "a[@href *= 'google']", ["google","groups"] ); t( "Attribute Contains", "a[@href *= 'google']", ["google","groups"] );
t("Select options via [@selected]", "#select1 option[@selected]", [] ); t("Select options via [@selected]", "#select1 option[@selected]", ["option1a"] );
t("Select options via [@selected]", "#select2 option[@selected]", ["option2d"] ); t("Select options via [@selected]", "#select2 option[@selected]", ["option2d"] );
t("Select options via [@selected]", "#select3 option[@selected]", ["option3b", "option3c"] ); t("Select options via [@selected]", "#select3 option[@selected]", ["option3b", "option3c"] );
......
...@@ -1473,20 +1473,24 @@ jQuery.extend({ ...@@ -1473,20 +1473,24 @@ jQuery.extend({
"^=": "z && !z.indexOf(m[4])", "^=": "z && !z.indexOf(m[4])",
"$=": "z && z.substr(z.length - m[4].length,m[4].length)==m[4]", "$=": "z && z.substr(z.length - m[4].length,m[4].length)==m[4]",
"*=": "z && z.indexOf(m[4])>=0", "*=": "z && z.indexOf(m[4])>=0",
"": "z" "": "z",
_resort: function(m){
return ["", m[1], m[3], m[2], m[5]];
},
_prefix: "z=jQuery.attr(a,m[3]);"
}, },
"[": "jQuery.find(m[2],a).length" "[": "jQuery.find(m[2],a).length"
}, },
/** /**
* All elements on a specified axis. * All elements on a specified axis.
* *
* @private * @private
* @name $.sibling * @name $.sibling
* @type Array * @type Array
* @param Element elem The element to find all the siblings of (including itself). * @param Element elem The element to find all the siblings of (including itself).
* @cat DOM/Traversing * @cat DOM/Traversing
*/ */
sibling: function( n, elem ) { sibling: function( n, elem ) {
var r = []; var r = [];
...@@ -1806,8 +1810,8 @@ jQuery.extend({ ...@@ -1806,8 +1810,8 @@ jQuery.extend({
if ( m ) { if ( m ) {
// Re-organize the first match // Re-organize the first match
if ( !i ) if ( jQuery.expr[ m[1] ]._resort )
m = ["",m[1], m[3], m[2], m[5]]; m = jQuery.expr[ m[1] ]._resort( m );
// Remove what we just matched // Remove what we just matched
t = t.replace( re, "" ); t = t.replace( re, "" );
...@@ -1838,7 +1842,7 @@ jQuery.extend({ ...@@ -1838,7 +1842,7 @@ jQuery.extend({
// Build a custom macro to enclose it // Build a custom macro to enclose it
eval("f = function(a,i){" + eval("f = function(a,i){" +
( m[1] == "@" ? "z=jQuery.attr(a,m[3]);" : "" ) + ( jQuery.expr[ m[1] ]._prefix || "" ) +
"return " + f + "}"); "return " + f + "}");
// Execute it against the current filter // Execute it against the current filter
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment