Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14217 anikendra 1
define([
2
	"../core",
3
	"../var/rnotwhite",
4
	"../var/strundefined",
5
	"../data/var/data_priv",
6
	"../core/init"
7
], function( jQuery, rnotwhite, strundefined, data_priv ) {
8
 
9
var rclass = /[\t\r\n\f]/g;
10
 
11
jQuery.fn.extend({
12
	addClass: function( value ) {
13
		var classes, elem, cur, clazz, j, finalValue,
14
			proceed = typeof value === "string" && value,
15
			i = 0,
16
			len = this.length;
17
 
18
		if ( jQuery.isFunction( value ) ) {
19
			return this.each(function( j ) {
20
				jQuery( this ).addClass( value.call( this, j, this.className ) );
21
			});
22
		}
23
 
24
		if ( proceed ) {
25
			// The disjunction here is for better compressibility (see removeClass)
26
			classes = ( value || "" ).match( rnotwhite ) || [];
27
 
28
			for ( ; i < len; i++ ) {
29
				elem = this[ i ];
30
				cur = elem.nodeType === 1 && ( elem.className ?
31
					( " " + elem.className + " " ).replace( rclass, " " ) :
32
					" "
33
				);
34
 
35
				if ( cur ) {
36
					j = 0;
37
					while ( (clazz = classes[j++]) ) {
38
						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
39
							cur += clazz + " ";
40
						}
41
					}
42
 
43
					// only assign if different to avoid unneeded rendering.
44
					finalValue = jQuery.trim( cur );
45
					if ( elem.className !== finalValue ) {
46
						elem.className = finalValue;
47
					}
48
				}
49
			}
50
		}
51
 
52
		return this;
53
	},
54
 
55
	removeClass: function( value ) {
56
		var classes, elem, cur, clazz, j, finalValue,
57
			proceed = arguments.length === 0 || typeof value === "string" && value,
58
			i = 0,
59
			len = this.length;
60
 
61
		if ( jQuery.isFunction( value ) ) {
62
			return this.each(function( j ) {
63
				jQuery( this ).removeClass( value.call( this, j, this.className ) );
64
			});
65
		}
66
		if ( proceed ) {
67
			classes = ( value || "" ).match( rnotwhite ) || [];
68
 
69
			for ( ; i < len; i++ ) {
70
				elem = this[ i ];
71
				// This expression is here for better compressibility (see addClass)
72
				cur = elem.nodeType === 1 && ( elem.className ?
73
					( " " + elem.className + " " ).replace( rclass, " " ) :
74
					""
75
				);
76
 
77
				if ( cur ) {
78
					j = 0;
79
					while ( (clazz = classes[j++]) ) {
80
						// Remove *all* instances
81
						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
82
							cur = cur.replace( " " + clazz + " ", " " );
83
						}
84
					}
85
 
86
					// Only assign if different to avoid unneeded rendering.
87
					finalValue = value ? jQuery.trim( cur ) : "";
88
					if ( elem.className !== finalValue ) {
89
						elem.className = finalValue;
90
					}
91
				}
92
			}
93
		}
94
 
95
		return this;
96
	},
97
 
98
	toggleClass: function( value, stateVal ) {
99
		var type = typeof value;
100
 
101
		if ( typeof stateVal === "boolean" && type === "string" ) {
102
			return stateVal ? this.addClass( value ) : this.removeClass( value );
103
		}
104
 
105
		if ( jQuery.isFunction( value ) ) {
106
			return this.each(function( i ) {
107
				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
108
			});
109
		}
110
 
111
		return this.each(function() {
112
			if ( type === "string" ) {
113
				// Toggle individual class names
114
				var className,
115
					i = 0,
116
					self = jQuery( this ),
117
					classNames = value.match( rnotwhite ) || [];
118
 
119
				while ( (className = classNames[ i++ ]) ) {
120
					// Check each className given, space separated list
121
					if ( self.hasClass( className ) ) {
122
						self.removeClass( className );
123
					} else {
124
						self.addClass( className );
125
					}
126
				}
127
 
128
			// Toggle whole class name
129
			} else if ( type === strundefined || type === "boolean" ) {
130
				if ( this.className ) {
131
					// store className if set
132
					data_priv.set( this, "__className__", this.className );
133
				}
134
 
135
				// If the element has a class name or if we're passed `false`,
136
				// then remove the whole classname (if there was one, the above saved it).
137
				// Otherwise bring back whatever was previously saved (if anything),
138
				// falling back to the empty string if nothing was stored.
139
				this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
140
			}
141
		});
142
	},
143
 
144
	hasClass: function( selector ) {
145
		var className = " " + selector + " ",
146
			i = 0,
147
			l = this.length;
148
		for ( ; i < l; i++ ) {
149
			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
150
				return true;
151
			}
152
		}
153
 
154
		return false;
155
	}
156
});
157
 
158
});