jquery.entwine.addrem.js
1.44 KB
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
(function($) {
$.entwine.Namespace.addMethods({
build_addrem_proxy: function(name) {
var one = this.one(name, 'func');
return function() {
if (this.length === 0){
return;
}
else if (this.length) {
var rv, i = this.length;
while (i--) rv = one(this[i], arguments);
return rv;
}
else {
return one(this, arguments);
}
};
},
bind_addrem_proxy: function(selector, name, func) {
var rulelist = this.store[name] || (this.store[name] = $.entwine.RuleList());
var rule = rulelist.addRule(selector, name); rule.func = func;
if (!this.injectee.hasOwnProperty(name)) {
this.injectee[name] = this.build_addrem_proxy(name);
this.injectee[name].isentwinemethod = true;
}
}
});
$.entwine.Namespace.addHandler({
order: 30,
bind: function(selector, k, v) {
if ($.isFunction(v) && (k == 'onadd' || k == 'onremove')) {
this.bind_addrem_proxy(selector, k, v);
return true;
}
}
});
$(document).bind('EntwineElementsAdded', function(e){
// For every namespace
for (var k in $.entwine.namespaces) {
var namespace = $.entwine.namespaces[k];
if (namespace.injectee.onadd) namespace.injectee.onadd.call(e.targets);
}
});
$(document).bind('EntwineElementsRemoved', function(e){
for (var k in $.entwine.namespaces) {
var namespace = $.entwine.namespaces[k];
if (namespace.injectee.onremove) namespace.injectee.onremove.call(e.targets);
}
});
})(jQuery);