blob: 43bf8ea8e43187dbd2488acb44f32a0d9c85a4d5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# [jQuery Once](http://github.com/robloach/jquery-once)
Act on jQuery elements only once.
## API
* [Universal Module Definition](#universal-module-definition)
* [`once()`](#once)
* [`findOnce()`](#findonce)
* [`removeOnce()`](#removeonce)
## Universal Module Definition
[jQuery](http://jquery.com) is a dependency, so we wrap the code with a
[UMD](https://github.com/umdjs/umd) pattern in order to allow loading jQuery,
and jQuery Once, using [AMD](https://github.com/amdjs/amdjs-api/wiki/AMD),
[CommonJS](http://en.wikipedia.org/wiki/CommonJS), or as a global variable.
((factory) ->
if typeof exports is "object"
factory require("jquery")
else if typeof define is "function" and define.amd
define ["jquery"], factory
else
factory jQuery
return
) ($) ->
uuid = 0
## `.once()`
Filter elements by whether they have not yet been processed.
### Parameters
* `id` The data id used to determine whether the given elements have already
been processed or not.
### Returns
jQuery element collection of elements that have now run once by
the given id.
### Example
``` javascript
// Change the color of the text to green.
$('p').once('changecolor').css('color', 'green');
```
### Source
$.fn.once = (id) ->
# The id parameter is required.
throw new Error("An ID is required when calling jQuery.once()") if not id
# Build the name for the data identifier.
name = "jquery-once-" + id
# Filter the elements by which do not have the data yet.
@filter ->
$(this).data(name) isnt true
.data name, true
## `.removeOnce()`
Removes the once data from the given elements, based on the given ID.
### Parameters
* `id` *string* A required string representing the name of the data id which
should be used when filtering the elements. This only filters elements that
have already been processed by the once function. The id should be the same id
that was originally passed to the `.once()` function.
### Returns
jQuery element collection that had their `once` data removed.
### Example
``` javascript
// Remove the once
$('p').removeOnce('changecolor').each(function() {
// This function is run for each element that had its once data removed.
});
```
### Source
$.fn.removeOnce = (id) ->
# Filter through the elements to find the once'd elements.
@findOnce(id).removeData "jquery-once-" + id
## `.findOnce()`
Filters elements that have already been processed once.
### Parameters
* `id` *string* A required string representing the name of the data id which
should be used when filtering the elements. This only filters elements that have
already been processed by the once function. The id should be the same id that
was originally passed to the `.once()` function.
### Returns
jQuery element collection of elements that have been run once.
### Example
``` javascript
// Remove the once
$('p').findOnce('changecolor').each(function() {
// This function is run for each element that has already been run once.
});
```
### Source
$.fn.findOnce = (id) ->
# Filter the elements by which do have the data.
name = "jquery-once-" + id
@filter ->
$(this).data(name) is true
return
|