From 97d468fbf0f840f52c91855b0bc8db0ed6ac403c Mon Sep 17 00:00:00 2001 From: jeresig Date: Mon, 27 Sep 2010 10:19:55 -0400 Subject: [PATCH] Add a feature test for options inside a disabled select. Follow-up to 157a383dae5335ef1056d3818d7dd70ac81c25a7. --- src/attributes.js | 3 ++- src/support.js | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/attributes.js b/src/attributes.js index 1afcf2a..dd6a3e7 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -164,8 +164,9 @@ jQuery.fn.extend({ var option = options[ i ]; // Don't return options that are disabled or in a disabled optgroup - if ( option.selected && option.getAttribute("disabled") === null && + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + // Get the specific value for the option value = jQuery(option).val(); diff --git a/src/support.js b/src/support.js index 75e89dd..2015918 100644 --- a/src/support.js +++ b/src/support.js @@ -20,6 +20,9 @@ return; } + var select = document.createElement("select"); + var opt = select.appendChild( document.createElement("option") ); + jQuery.support = { // IE strips leading whitespace when .innerHTML is used leadingWhitespace: div.firstChild.nodeType === 3, @@ -56,15 +59,21 @@ // 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, + optSelected: opt.selected, // Will be defined later + optDisabled: false, checkClone: false, scriptEval: false, noCloneEvent: true, boxModel: null }; + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as diabled) + select.disabled = true; + jQuery.support.optDisabled = !opt.disabled; + script.type = "text/javascript"; try { script.appendChild( document.createTextNode( "window." + id + "=1;" ) ); -- 1.7.10.4