aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBrandon Aaron <brandon.aaron@gmail.com>2007-02-23 02:53:22 +0000
committerBrandon Aaron <brandon.aaron@gmail.com>2007-02-23 02:53:22 +0000
commit44599e174b5d1f924def5a3950375ead12b9d21b (patch)
tree91a2370332bb9bf0ebe55bb281847c21d3eb2a79 /src
parent4259b02c99202092d222fc7ca19c1ab83df7eafa (diff)
downloadjquery-44599e174b5d1f924def5a3950375ead12b9d21b.tar.gz
jquery-44599e174b5d1f924def5a3950375ead12b9d21b.zip
* Fixed IE ID selectors selecting by the name attribute and added tests
* Added href attribute test to test suite * Updated Changelog
Diffstat (limited to 'src')
-rw-r--r--src/jquery/coreTest.js9
-rw-r--r--src/selector/selector.js8
-rw-r--r--src/selector/selectorTest.js8
3 files changed, 18 insertions, 7 deletions
diff --git a/src/jquery/coreTest.js b/src/jquery/coreTest.js
index 497d30dbd..25cb69b30 100644
--- a/src/jquery/coreTest.js
+++ b/src/jquery/coreTest.js
@@ -74,7 +74,7 @@ test("index(Object)", function() {
});
test("attr(String)", function() {
- expect(14);
+ expect(15);
ok( $('#text1').attr('value') == "Test", 'Check for value attribute' );
ok( $('#text1').attr('type') == "text", 'Check for type attribute' );
ok( $('#radio1').attr('type') == "radio", 'Check for type attribute' );
@@ -87,7 +87,10 @@ test("attr(String)", function() {
ok( $('#name').attr('name') == "name", 'Check for name attribute' );
ok( $('#text1').attr('name') == "action", 'Check for name attribute' );
ok( $('#form').attr('action').indexOf("formaction") >= 0, 'Check for action attribute' );
- //equals( "#2", $('#anchor2').attr('href'), 'Check for non-absolute href (an anchor)' ); This fails in IE because the _config.fixture is reloaded using innerHTML
+
+ $('<a id="tAnchor5"></a>').attr('href', '#5').appendTo('#main'); // using innerHTML in IE causes href attribute to be serialized to the full path
+ ok( $('#tAnchor5').attr('href') == "#5", 'Check for non-absolute href (an anchor)' );
+
stop();
$.get("data/dashboard.xml", function(xml) {
ok( $("locations", xml).attr("class") == "foo", "Check class attribute in XML document" );
@@ -242,7 +245,7 @@ test("append(String|Element|Array&lt;Element&gt;|jQuery)", function() {
reset();
$("#sap").append(document.getElementById('form'));
- ok( $("#sap>form").size() == 1, "Check for appending a form" );
+ ok( $("#sap>form").size() == 1, "Check for appending a form" ); // Bug #910
});
diff --git a/src/selector/selector.js b/src/selector/selector.js
index a6597f456..e1abbf4f6 100644
--- a/src/selector/selector.js
+++ b/src/selector/selector.js
@@ -223,11 +223,15 @@ jQuery.extend({
if ( m[1] == "#" && ret[ret.length-1].getElementById ) {
// Optimization for HTML document case
var oid = ret[ret.length-1].getElementById(m[2]);
+
+ // Do a quick check for the existence of the actual ID attribute
+ // to avoid selecting by the name attribute in IE
+ if ( jQuery.browser.msie && oid && oid.id != m[2] )
+ oid = jQuery('[@id="'+m[2]+'"]', ret[ret.length-1])[0];
// Do a quick check for node name (where applicable) so
// that div#foo searches will be really fast
- ret = r = oid &&
- (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : [];
+ ret = r = oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : [];
} else {
// Pre-compile a regular expression to handle class searches
diff --git a/src/selector/selectorTest.js b/src/selector/selectorTest.js
index be216f8bf..c9cf762a5 100644
--- a/src/selector/selectorTest.js
+++ b/src/selector/selectorTest.js
@@ -11,7 +11,7 @@ test("expressions - element", function() {
});
test("expressions - id", function() {
- expect(11);
+ expect(13);
t( "ID Selector", "#body", ["body"] );
t( "ID Selector w/ Element", "body#body", ["body"] );
t( "ID Selector w/ Element", "ul#first", [] );
@@ -25,7 +25,11 @@ test("expressions - id", function() {
t( "All Children of ID", "#foo/*", ["sndp", "en", "sap"] );
t( "All Children of ID with no children", "#firstUL/*", [] );
- t( "ID selector with non-existant ancestor", "#asdfasdf #foobar", [] );
+ $('<a name="tName1">tName1 A</a><a name="tName2">tName2 A</a><div id="tName1">tName1 Div</div>').appendTo('#main');
+ ok( $("#tName1")[0].id == 'tName1', "ID selector with same value for a name attribute" );
+ ok( $("#tName2").length == 0, "ID selector non-existing but name attribute on an A tag" );
+
+ t( "ID selector with non-existant ancestor", "#asdfasdf #foobar", [] ); // bug #986
});