]> git.r.bdr.sh - rbdr/dotfiles/blob - atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/access.js
b6110c8f31c1c16f348267eb3e48d08b9597c03c
[rbdr/dotfiles] / atom / packages / ex-mode / node_modules / space-pen / node_modules / jquery / src / core / access.js
1 define([
2 "../core"
3 ], function( jQuery ) {
4
5 // Multifunctional method to get and set values of a collection
6 // The value/s can optionally be executed if it's a function
7 var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
8 var i = 0,
9 len = elems.length,
10 bulk = key == null;
11
12 // Sets many values
13 if ( jQuery.type( key ) === "object" ) {
14 chainable = true;
15 for ( i in key ) {
16 jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
17 }
18
19 // Sets one value
20 } else if ( value !== undefined ) {
21 chainable = true;
22
23 if ( !jQuery.isFunction( value ) ) {
24 raw = true;
25 }
26
27 if ( bulk ) {
28 // Bulk operations run against the entire set
29 if ( raw ) {
30 fn.call( elems, value );
31 fn = null;
32
33 // ...except when executing function values
34 } else {
35 bulk = fn;
36 fn = function( elem, key, value ) {
37 return bulk.call( jQuery( elem ), value );
38 };
39 }
40 }
41
42 if ( fn ) {
43 for ( ; i < len; i++ ) {
44 fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
45 }
46 }
47 }
48
49 return chainable ?
50 elems :
51
52 // Gets
53 bulk ?
54 fn.call( elems ) :
55 len ? fn( elems[0], key ) : emptyGet;
56 };
57
58 return access;
59
60 });