Make sure that jQuery works even when the individual modules are loaded separately...
[jquery.git] / src / attributes.js
index 1278ff8..73b4cdf 100644 (file)
@@ -1,3 +1,5 @@
+(function( jQuery ) {
+
 var rclass = /[\n\t]/g,
        rspace = /\s+/,
        rreturn = /\r/g,
@@ -139,7 +141,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
@@ -322,6 +327,12 @@ jQuery.extend({
                                elem.setAttribute( name, "" + value );
                        }
 
+                       // Ensure that missing attributes return undefined
+                       // Blackberry 4.7 returns "" from getAttribute #6938
+                       if ( !elem.attributes[ name ] && !elem.hasAttribute( name ) ) {
+                               return undefined;
+                       }
+
                        var attr = !jQuery.support.hrefNormalized && notxml && special ?
                                        // Some attributes require a special call on IE
                                        elem.getAttribute( name, 2 ) :
@@ -336,3 +347,5 @@ jQuery.extend({
                return jQuery.style( elem, name, value );
        }
 });
+
+})( jQuery );