152 votes

La recherche de jQuery trouver(..) méthode qui comprend le noeud courant

Le jQuery trouver(..) la traversée de la méthode n'inclut pas le nœud actuel - il commence avec les enfants du nœud courant. Quelle est la meilleure façon d'appeler une opération de recherche qui inclut le nœud dans son algorithme de mise en correspondance? En regardant à travers les docs rien ne saute immédiatement aux yeux.

171voto

Robert Points 873

Pour jQuery 1.8 et, andSelf est obsolète et vous pouvez utiliser addBack à la place. Il prend un sélecteur de sorte que vous n'avez pas besoin de filtrer le résultat:

object.find('selector').addBack('selector')

41voto

Nick Craver Points 313913

Vous ne pouvez pas le faire directement, le plus proche que je peux penser à est de à l'aide de .andSelf() et en appelant .filter(), comme ceci:

$(selector).find(oSelector).andSelf().filter(oSelector)
//or...
$(selector).find('*').andSelf().filter(oSelector);

Malheureusement, .andSelf() ne pas prendre un sélecteur, ce qui serait pratique.

5voto

Tgr Points 11766
$('selector').find('otherSelector').add($('selector').filter('otherSelector'))

Vous pouvez stocker $('selector') dans une variable pour l'accélération. Vous pouvez même écrire une fonction personnalisée pour ce si vous avez besoin d'un lot:

$.fn.andFind = function(expr) {
  return this.find(expr).add(this.filter(expr));
};

$('selector').andFind('otherSelector')

5voto

erikrestificar Points 1

L'on a accepté la réponse est très inefficace et les filtres de l'ensemble des éléments qui sont déjà appariés.

//find descendants that match the selector
var $selection = $context.find(selector);
//filter the parent/context based on the selector and add it
$selection = $selection.add($context.filter(selector);

1voto

interjay Points 51000

Je pense que andSelf est ce que vous voulez:

obj.find(selector).andSelf()

Notez qu'il sera toujours ajouter le noeud courant, si oui ou non il correspond au sélecteur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X