Skip to content

Commit

Permalink
Make a feature detect for the attribute selected code. Fixes #5702.
Browse files Browse the repository at this point in the history
  • Loading branch information
jeresig committed Dec 22, 2009
1 parent 7b0b348 commit a00e63e
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
17 changes: 10 additions & 7 deletions src/attributes.js
Expand Up @@ -261,16 +261,19 @@ 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 ), parent = elem.parentNode;
var special = rspecialurl.test( name );

// Safari mis-reports the default selected property of an option
// Accessing the parent's selectedIndex property fixes it
if ( name === "selected" && parent ) {
parent.selectedIndex;

// Make sure that it also works with optgroups, see #5701
if ( parent.parentNode ) {
parent.parentNode.selectedIndex;
if ( name === "selected" && !jQuery.support.optSelected ) {
var parent = elem.parentNode;
if ( parent ) {
parent.selectedIndex;

// Make sure that it also works with optgroups, see #5701
if ( parent.parentNode ) {
parent.parentNode.selectedIndex;
}
}
}

Expand Down
6 changes: 5 additions & 1 deletion src/support.js
Expand Up @@ -8,7 +8,7 @@
id = "script" + now();

div.style.display = "none";
div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><select><option>text</option></select><input type='checkbox'/>";
div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";

var all = div.getElementsByTagName("*"),
a = div.getElementsByTagName("a")[0];
Expand Down Expand Up @@ -52,6 +52,10 @@
// (WebKit defaults to "" instead)
checkOn: div.getElementsByTagName("input")[0].value === "on",

// Make sure that a selected-by-default option has a working selected property.
// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected,

// Will be defined later
scriptEval: false,
noCloneEvent: true,
Expand Down

0 comments on commit a00e63e

Please sign in to comment.