.val() on empty options returns the text value rather than the value in Blackberry...
[jquery.git] / src / attributes.js
index 4f7055a..d2fc202 100644 (file)
@@ -9,7 +9,7 @@ var rclass = /[\n\t]/g,
 
 jQuery.fn.extend({
        attr: function( name, value ) {
-               return access( this, name, value, true, jQuery.attr );
+               return jQuery.access( this, name, value, true, jQuery.attr );
        },
 
        removeAttr: function( name, fn ) {
@@ -139,7 +139,10 @@ jQuery.fn.extend({
 
                        if ( elem ) {
                                if ( jQuery.nodeName( elem, "option" ) ) {
-                                       return (elem.attributes.value || {}).specified ? elem.value : elem.text;
+                                       // attributes.value is undefined in Blackberry 4.7 but
+                                       // uses .value. See #6932
+                                       var val = elem.attributes.value;
+                                       return !val || val.specified ? elem.value : elem.text;
                                }
 
                                // We need to handle select boxes special
@@ -278,7 +281,8 @@ jQuery.extend({
                        }
 
                        // If applicable, access the attribute via the DOM 0 way
-                       if ( name in elem && notxml && !special ) {
+                       // 'in' checks fail in Blackberry 4.7 #6931
+                       if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {
                                if ( set ) {
                                        // We can't allow the type property to be changed (since it causes problems in IE)
                                        if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {