-
Notifications
You must be signed in to change notification settings - Fork 5
/
uSelectorPseudoClasses.js
49 lines (44 loc) · 1.28 KB
/
uSelectorPseudoClasses.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
(function(){
var pseudos = {
empty: function(node){
var child = node.firstChild;
return !(child && child.nodeType == 1) && !(node.innerText || node.textContent || '').length;
},
'first-child': function(node){
while ((node = node.previousSibling)) if (node.nodeType == 1) return false;
return true;
},
'last-child': function(node){
while ((node = node.nextSibling)) if (node.nodeType == 1) return false;
return true;
},
'only-child': function(node){
return this.pseudos['first-child'](node) && this.pseudos['last-child'](node);
},
'first-of-type': function(node){
var nodeName = node.nodeName;
while ((node = node.previousSibling)) if (node.nodeName == nodeName) return false;
return true;
},
'last-of-type': function(node){
var nodeName = node.nodeName;
while ((node = node.nextSibling)) if (node.nodeName == nodeName) return false;
return true;
},
'only-of-type': function(node){
return this.pseudos['first-of-type'](node) && this.pseudos['last-of-type'](node);
},
disabled: function(node){
return node.disabled;
},
checked: function(node){
return node.checked || node.selected;
},
selected: function(node){
return node.selected;
}
};
for (var pseudo in pseudos){
$u.pseudos[pseudo] = pseudos[pseudo];
}
})();