Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Make sure that selected works in Safari on options in optgroups. Fixe…

…s #5701.
  • Loading branch information...
commit 4729f4d44326fd302c63af8f3324b6c4bac54084 1 parent baff0b0
@jeresig jeresig authored
Showing with 15 additions and 4 deletions.
  1. +8 −3 src/attributes.js
  2. +7 −1 test/unit/attributes.js
View
11 src/attributes.js
@@ -261,12 +261,17 @@ jQuery.extend({
// Only do all the following if this is a node (faster for style)
if ( elem.nodeType === 1 ) {
// These attributes require special treatment
- var special = rspecialurl.test( name );
+ var special = rspecialurl.test( name ), parent = elem.parentNode;
// Safari mis-reports the default selected property of a hidden option
// Accessing the parent's selectedIndex property fixes it
- if ( name === "selected" && elem.parentNode ) {
- elem.parentNode.selectedIndex;
+ if ( name === "selected" && parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
}
// If applicable, access the attribute via the DOM 0 way
View
8 test/unit/attributes.js
@@ -4,7 +4,7 @@ var bareObj = function(value) { return value; };
var functionReturningObj = function(value) { return (function() { return value; }); };
test("attr(String)", function() {
- expect(27);
+ expect(28);
// This one sometimes fails randomly ?!
equals( jQuery('#text1').attr('value'), "Test", 'Check for value attribute' );
@@ -55,6 +55,12 @@ test("attr(String)", function() {
ok( $body.attr('foo') === undefined, 'Make sure the expando is preferred over the dom attribute, even if undefined' );
body.removeAttribute('foo'); // Cleanup
+
+ var select = document.createElement("select"), optgroup = document.createElement("optgroup"), option = document.createElement("option");
+ optgroup.appendChild( option );
+ select.appendChild( optgroup );
+
+ equals( jQuery(option).attr("selected"), true, "Make sure that a single option is selected, even when in an optgroup." );
});
if ( !isLocal ) {
Please sign in to comment.
Something went wrong with that request. Please try again.