Added support for finding elements that have underscores in their name (along with other allowed characters). Fix for ticket #1084.

This commit is contained in:
John Resig 2007-04-28 15:39:30 +00:00
parent 610149fd19
commit fce2bdf7ff
3 changed files with 9 additions and 5 deletions

View 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>
<foo_bar id="foobar">test element</foo_bar>
</form>
<b id="floatTest">Float test.</b>
<iframe id="iframe" name="iframe"></iframe>

View file

@ -80,7 +80,7 @@ jQuery.extend({
// Match: :even, :last-chlid, #id, .class
new RegExp("^([:.#]*)(" +
( jQuery.chars = "(?:[\\w\u0128-\uFFFF*-]|\\\\.)" ) + "+)")
( jQuery.chars = "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)" ) + "+)")
],
token: [
@ -152,7 +152,7 @@ jQuery.extend({
// 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 ) {
@ -207,7 +207,7 @@ jQuery.extend({
} 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

View file

@ -1,7 +1,7 @@
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"] );
@ -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' );
t( "Element Selector with underscore", "foo_bar", ["foobar"] );
});
test("broken", function() {