forked from brendenlake/visual-turing-tests
-
Notifications
You must be signed in to change notification settings - Fork 0
/
extend_jquery.js
58 lines (52 loc) · 1.19 KB
/
extend_jquery.js
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
//
// My jQuery extensions
//
// Detect if a jQuery select returns empty
//
// Used like:
// $("#notAnElement").exists();
$.fn.exists = function () {
return this.length !== 0;
}
// Used like:
// $(".myclass").get_attr('id');
// returns an array of all of the ids
$.fn.get_attr = function (myattr) {
var out = new Array();
this.each( function () {
out.push($(this).attr(myattr));
});
return out;
}
//
// Other extensions
//
// Crockford's method for calling super-functions
// in inheritance hierarchy
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
Object.method('superior', function (name) {
var that = this;
var method = that[name];
if (method === undefined) {
return undefined;
//throw new Error('Superior method .' + name + ' is undefined');
}
return function () {
return method.apply(that, arguments);
};
});
// returns only the unique elements of an array
Array.prototype.unique = function() {
var u = {}, a = [];
for(var i = 0, l = this.length; i < l; ++i){
if(u.hasOwnProperty(this[i])) {
continue;
}
a.push(this[i]);
u[this[i]] = 1;
}
return a;
};