nœud ancêtre le plus proche dans jQuery

Dans mon javascript expérience, j'ai trouvé que c'est un très commun de la tâche "la recherche de l'ancêtre le plus proche d'un élément avec une condition (nom de la balise, classe,...)".
Pouvez les parents() de jquery faire le travail? L'ordre des éléments retournés de parents() est prévisible? Est de haut en bas ou de bas en haut?
Pour le moment j'utilise cette fonction d'utilité:

function ancestor(elem, selector) {
  var $elem = $( elem ).parent();
  while( $elem.size() > 0 ) {
    if( $elem.is( selector ) ) 
    return $elem;
    else
       $elem = $elem.parent();
  }
  return null;
}

Quelqu'un peut me dire si il existe un moyen astucieux pour faire le travail?

source d'informationauteur Pier Luigi