-
Notifications
You must be signed in to change notification settings - Fork 30.1k
/
learn-tests.ts
59 lines (47 loc) · 1.46 KB
/
learn-tests.ts
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
// From https://learn.jquery.com/plugins/basic-plugin-creation/
// Basic Plugin Authoring
interface JQuery {
greenify: GreenifyPlugin;
}
interface GreenifyPlugin {
(this: JQuery): void;
}
jQuery.fn.greenify = function() {
this.css("color", "green");
};
jQuery("a").greenify(); // Makes all the links green.
// https://learn.jquery.com/events/event-extensions/
// Events
function special() {
function defineSpecialEvent() {
jQuery.event.special.pushy = {
bindType: "click",
delegateType: "click",
};
}
function handleObj() {
jQuery.event.special.multiclick = {
delegateType: "click",
bindType: "click",
handle(event) {
const handleObj = event.handleObj;
const targetData = jQuery.data(event.target as Element);
let ret = null;
// If a multiple of the click count, run the handler
targetData.clicks = (targetData.clicks || 0) + 1;
if (targetData.clicks % event.data.clicks === 0) {
event.type = handleObj.origType;
ret = handleObj.handler.apply(this, arguments);
event.type = handleObj.type;
return ret;
}
},
};
// Sample usage
$("p").on("multiclick", {
clicks: 3,
}, () => {
alert("clicked 3 times");
});
}
}