git.asbjorn.biz
/
jquery.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7b0b348
)
Make a feature detect for the attribute selected code. Fixes #5702.
author
jeresig
<jeresig@gmail.com>
Tue, 22 Dec 2009 20:46:54 +0000
(15:46 -0500)
committer
jeresig
<jeresig@gmail.com>
Tue, 22 Dec 2009 20:46:54 +0000
(15:46 -0500)
src/attributes.js
patch
|
blob
|
history
src/support.js
patch
|
blob
|
history
diff --git
a/src/attributes.js
b/src/attributes.js
index
b3a49f5
..
a2108fe
100644
(file)
--- a/
src/attributes.js
+++ b/
src/attributes.js
@@
-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
// 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
// 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;
+ }
}
}
}
}
diff --git
a/src/support.js
b/src/support.js
index
9767298
..
3e99772
100644
(file)
--- a/
src/support.js
+++ b/
src/support.js
@@
-8,7
+8,7
@@
id = "script" + now();
div.style.display = "none";
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];
var all = div.getElementsByTagName("*"),
a = div.getElementsByTagName("a")[0];
@@
-52,6
+52,10
@@
// (WebKit defaults to "" instead)
checkOn: div.getElementsByTagName("input")[0].value === "on",
// (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,
// Will be defined later
scriptEval: false,
noCloneEvent: true,