Creo que su método es eficiente en términos de tiempo de ejecución, pero lo que probablemente está pidiendo es el azúcar sintáctica. Por eso, usted podría envolverlo en un plugin:
jQuery.fn.findAndSelf = function(selector) {
return this.find(selector).add(this.filter(selector))
}
Entonces utilizar de esta manera:
$('.whatever').findAndSelf('.awesome')
Si desea conseguir la suposición podría crear un plugin que funciona no sólo para 'encontrar' pero para 'padres' y 'niños' y otros complementos a base de selectores:
jQuery.fn.withSelf = function(plugin, selector) {
return this[plugin](selector).add(this.filter(selector))
}
Entonces será suministran como primer argumento el recorrido de plugins que desea llamar:
$('.whatever').withSelf('find', '.awesome')
$('.whatever').withSelf('parents', '.awesome')
Sólo por diversión, otro plugin de la diversión que le permite llamar a un número arbitrario de plugins de recorrido de todos a la vez:
jQuery.fn.traverse = function(plugins, selector) {
var set = new jQuery();
$.each(plugins, function(i, val) {
set.add(this[val](selector));
}
return set
}
Se podría invocar éste con cualquier combinación de complementos a base de selectores, de la siguiente manera :
$('.whatever').traverse(['find','filter'], '.awesome')
$('.whatever').traverse(['parents','find'], '.awesome')
$('.whatever').traverse(['parents', 'filter'], '.awesome')
¿Qué es mejor? '.find ('*')' o '.contents()' como en: http://stackoverflow.com/questions/364791/jquery-select-descendants-including-the-parent – Joe
Probablemente sea una buena idea tener en cuenta que y Self está ahora en desuso y ha sido reemplazado por addBack() que también acepta un selector. http://api.jquery.com/addBack/ –