UNPKG

ddd-jquery

Version:

de-bowerified, de-amdified, de-gruntified... jQuery.

62 lines 2.35 kB
var jQuery = require('../core'), indexOf = require('../var/indexOf'), rneedsContext = require('./var/rneedsContext'), __unnameddep__ = require('../selector'); var risSimple = /^.[^:#\[\.,]*$/; function winnow(elements, qualifier, not) { if (jQuery.isFunction(qualifier)) { return jQuery.grep(elements, function (elem, i) { return !!qualifier.call(elem, i, elem) !== not; }); } if (qualifier.nodeType) { return jQuery.grep(elements, function (elem) { return elem === qualifier !== not; }); } if (typeof qualifier === 'string') { if (risSimple.test(qualifier)) { return jQuery.filter(qualifier, elements, not); } qualifier = jQuery.filter(qualifier, elements); } return jQuery.grep(elements, function (elem) { return indexOf.call(qualifier, elem) >= 0 !== not; }); } jQuery.filter = function (expr, elems, not) { var elem = elems[0]; if (not) { expr = ':not(' + expr + ')'; } return elems.length === 1 && elem.nodeType === 1 ? jQuery.find.matchesSelector(elem, expr) ? [elem] : [] : jQuery.find.matches(expr, jQuery.grep(elems, function (elem) { return elem.nodeType === 1; })); }; jQuery.fn.extend({ find: function (selector) { var i = 0, len = this.length, ret = [], self = this; if (typeof selector !== 'string') { return this.pushStack(jQuery(selector).filter(function () { for (; i < len; i++) { if (jQuery.contains(self[i], this)) { return true; } } })); } i = 0; for (; i < len; i++) { jQuery.find(selector, self[i], ret); } ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret); ret.selector = this.selector ? this.selector + ' ' + selector : selector; return ret; }, filter: function (selector) { return this.pushStack(winnow(this, selector || [], false)); }, not: function (selector) { return this.pushStack(winnow(this, selector || [], true)); }, is: function (selector) { return !!winnow(this, typeof selector === 'string' && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length; } });