istesequi
Version:
Lightweight and intuitive javascript library
28 lines (22 loc) • 992 B
JavaScript
// .filter(selector)
// Delete all of the nodes that don't pass the selector
u.prototype.filter = function(selector){
// The default function if it's a css selector
// Cannot change name to 'selector' since it'd mess with it inside this fn
var callback = function(node){
// Make it compatible with some other browsers
node.matches = node.matches || node.msMatchesSelector || node.webkitMatchesSelector;
// Check if it's the same element (or any element if no selector was passed)
return node.matches(selector || "*");
}
// filter() receives a function as in .filter(e => u(e).children().length)
if (typeof selector == 'function') callback = selector;
// filter() receives an instance of Umbrella as in .filter(u('a'))
if (selector instanceof u) {
callback = function(node){
return (selector.nodes).indexOf(node) !== -1;
};
}
// Just a native filtering function for ultra-speed
return u(this.nodes.filter(callback));
};