Blame view
app/bower_components/jquery/src/attributes/prop.js
2.93 KB
|
87c93a029
|
1 |
define( [ |
|
f986e111b
|
2 3 |
"../core", "../core/access", |
|
87c93a029
|
4 5 |
"./support", "../selector" |
|
f986e111b
|
6 |
], function( jQuery, access, support ) {
|
|
87c93a029
|
7 8 9 |
"use strict"; var rfocusable = /^(?:input|select|textarea|button)$/i, |
|
f986e111b
|
10 |
rclickable = /^(?:a|area)$/i; |
|
87c93a029
|
11 |
jQuery.fn.extend( {
|
|
f986e111b
|
12 13 14 15 16 |
prop: function( name, value ) {
return access( this, jQuery.prop, name, value, arguments.length > 1 );
},
removeProp: function( name ) {
|
|
87c93a029
|
17 18 19 |
return this.each( function() {
delete this[ jQuery.propFix[ name ] || name ];
} );
|
|
f986e111b
|
20 |
} |
|
87c93a029
|
21 |
} ); |
|
f986e111b
|
22 |
|
|
87c93a029
|
23 |
jQuery.extend( {
|
|
f986e111b
|
24 |
prop: function( elem, name, value ) {
|
|
87c93a029
|
25 |
var ret, hooks, |
|
f986e111b
|
26 |
nType = elem.nodeType; |
|
87c93a029
|
27 28 |
// Don't get/set properties on text, comment and attribute nodes
if ( nType === 3 || nType === 8 || nType === 2 ) {
|
|
f986e111b
|
29 30 |
return; } |
|
87c93a029
|
31 |
if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
|
|
f986e111b
|
32 |
|
|
f986e111b
|
33 34 35 36 37 38 |
// Fix name and attach hooks
name = jQuery.propFix[ name ] || name;
hooks = jQuery.propHooks[ name ];
}
if ( value !== undefined ) {
|
|
87c93a029
|
39 40 41 42 43 44 |
if ( hooks && "set" in hooks &&
( ret = hooks.set( elem, value, name ) ) !== undefined ) {
return ret;
}
return ( elem[ name ] = value );
|
|
f986e111b
|
45 |
} |
|
87c93a029
|
46 47 48 49 50 51 |
if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
return ret;
}
return elem[ name ];
|
|
f986e111b
|
52 53 54 55 56 |
},
propHooks: {
tabIndex: {
get: function( elem ) {
|
|
87c93a029
|
57 58 59 60 61 |
// Support: IE <=9 - 11 only // elem.tabIndex doesn't always return the // correct value when it hasn't been explicitly set // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ |
|
f986e111b
|
62 63 |
// Use proper attribute retrieval(#12072) var tabindex = jQuery.find.attr( elem, "tabindex" ); |
|
87c93a029
|
64 65 66 67 68 69 70 71 72 73 74 75 76 |
if ( tabindex ) {
return parseInt( tabindex, 10 );
}
if (
rfocusable.test( elem.nodeName ) ||
rclickable.test( elem.nodeName ) &&
elem.href
) {
return 0;
}
return -1;
|
|
f986e111b
|
77 78 |
} } |
|
87c93a029
|
79 |
}, |
|
f986e111b
|
80 |
|
|
87c93a029
|
81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
propFix: {
"for": "htmlFor",
"class": "className"
}
} );
// Support: IE <=11 only
// Accessing the selectedIndex property
// forces the browser to respect setting selected
// on the option
// The getter ensures a default option is selected
// when in an optgroup
// eslint rule "no-unused-expressions" is disabled for this code
// since it considers such accessions noop
|
|
f986e111b
|
95 96 97 |
if ( !support.optSelected ) {
jQuery.propHooks.selected = {
get: function( elem ) {
|
|
87c93a029
|
98 99 |
/* eslint no-unused-expressions: "off" */ |
|
f986e111b
|
100 |
var parent = elem.parentNode; |
|
87c93a029
|
101 102 103 104 105 106 107 108 |
if ( parent && parent.parentNode ) {
parent.parentNode.selectedIndex;
}
return null;
},
set: function( elem ) {
/* eslint no-unused-expressions: "off" */
|
|
f986e111b
|
109 |
|
|
87c93a029
|
110 |
var parent = elem.parentNode; |
|
f986e111b
|
111 112 |
if ( parent ) {
parent.selectedIndex;
|
|
f986e111b
|
113 114 115 116 |
if ( parent.parentNode ) {
parent.parentNode.selectedIndex;
}
}
|
|
f986e111b
|
117 118 119 |
} }; } |
|
87c93a029
|
120 |
jQuery.each( [ |
|
f986e111b
|
121 122 123 124 125 126 127 128 129 130 131 132 |
"tabIndex",
"readOnly",
"maxLength",
"cellSpacing",
"cellPadding",
"rowSpan",
"colSpan",
"useMap",
"frameBorder",
"contentEditable"
], function() {
jQuery.propFix[ this.toLowerCase() ] = this;
|
|
87c93a029
|
133 |
} ); |
|
f986e111b
|
134 |
|
|
87c93a029
|
135 |
} ); |