Added support for finding elements that have underscores in their name (along with...
authorJohn Resig <jeresig@gmail.com>
Sat, 28 Apr 2007 15:39:30 +0000 (15:39 +0000)
committerJohn Resig <jeresig@gmail.com>
Sat, 28 Apr 2007 15:39:30 +0000 (15:39 +0000)
build/test/index.html
src/selector/selector.js
src/selector/selectorTest.js

index 10e74cc..38fdad9 100644 (file)
@@ -85,6 +85,8 @@
                        <span id="utf8class2" class="台北"></span>
                        <span id="foo:bar" class="foo:bar"></span>
                        <span id="test.foo[5]bar" class="test.foo[5]bar"></span>
                        <span id="utf8class2" class="台北"></span>
                        <span id="foo:bar" class="foo:bar"></span>
                        <span id="test.foo[5]bar" class="test.foo[5]bar"></span>
+                       
+                       <foo_bar id="foobar">test element</foo_bar>
                </form>
                <b id="floatTest">Float test.</b>
                <iframe id="iframe" name="iframe"></iframe>
                </form>
                <b id="floatTest">Float test.</b>
                <iframe id="iframe" name="iframe"></iframe>
index d6d87c0..be50d33 100644 (file)
@@ -80,7 +80,7 @@ jQuery.extend({
 
                // Match: :even, :last-chlid, #id, .class
                new RegExp("^([:.#]*)(" + 
 
                // Match: :even, :last-chlid, #id, .class
                new RegExp("^([:.#]*)(" + 
-                       ( jQuery.chars = "(?:[\\w\u0128-\uFFFF*-]|\\\\.)" ) + "+)")
+                       ( jQuery.chars = "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)" ) + "+)")
        ],
 
        token: [
        ],
 
        token: [
@@ -152,7 +152,7 @@ jQuery.extend({
 
                        // An attempt at speeding up child selectors that
                        // point to a specific element tag
 
                        // An attempt at speeding up child selectors that
                        // point to a specific element tag
-                       var re = /^[\/>]\s*([\w*-]+)/;
+                       var re = new RegExp("^[/>]\\s*(" + jQuery.chars + "+)");
                        var m = re.exec(t);
 
                        if ( m ) {
                        var m = re.exec(t);
 
                        if ( m ) {
@@ -207,7 +207,7 @@ jQuery.extend({
 
                                } else {
                                        // Optomize for the case nodeName#idName
 
                                } else {
                                        // Optomize for the case nodeName#idName
-                                       var re2 = new RegExp("^(\\w+)(#)(" + jQuery.chars + "+)");
+                                       var re2 = new RegExp("^(" + jQuery.chars + "+)(#)(" + jQuery.chars + "+)");
                                        var m = re2.exec(t);
                                        
                                        // Re-organize the results, so that they're consistent
                                        var m = re2.exec(t);
                                        
                                        // Re-organize the results, so that they're consistent
index 23f44c3..07e4d50 100644 (file)
@@ -1,7 +1,7 @@
 module("selector");
 
 test("element", function() {
 module("selector");
 
 test("element", function() {
-       expect(8);
+       expect(9);
        ok( $("*").size() >= 30, "Select all" );
        t( "Element Selector", "div", ["main","foo"] );
        t( "Element Selector", "body", ["body"] );
        ok( $("*").size() >= 30, "Select all" );
        t( "Element Selector", "div", ["main","foo"] );
        t( "Element Selector", "body", ["body"] );
@@ -11,6 +11,8 @@ test("element", function() {
        
        ok( $("#length").length, '&lt;input name="length"&gt; cannot be found under IE, see #945' );
        ok( $("#lengthtest input").length, '&lt;input name="length"&gt; cannot be found under IE, see #945' );
        
        ok( $("#length").length, '&lt;input name="length"&gt; cannot be found under IE, see #945' );
        ok( $("#lengthtest input").length, '&lt;input name="length"&gt; cannot be found under IE, see #945' );
+
+       t( "Element Selector with underscore", "foo_bar", ["foobar"] );
 });
 
 test("broken", function() {
 });
 
 test("broken", function() {
@@ -204,4 +206,4 @@ test("basic xpath", function() {
        $("#foo").each(function() {
                isSet( $("/p", this).get(), q("sndp", "en", "sap"), "Check XPath context" );
        });
        $("#foo").each(function() {
                isSet( $("/p", this).get(), q("sndp", "en", "sap"), "Check XPath context" );
        });
-});
\ No newline at end of file
+});