web-dev-qa-db-fra.com

Obtenir tous les liens avec une valeur HTML interne spécifique dans jQuery

<div>
    <a>
       Text1
       <img alt="" stc="" />
    </a>
    <a>
       Text2
    </a>
 </div>

Je souhaite sélectionner tous les éléments d'ancrage qui ont text=text2. Je cherche quelque chose comme ça:

$('a[text=Text2]')

Edit: Pourquoi cela ne fonctionne pas? Pour une raison quelconque, il doit être dans ce format:

$('div').find('a').find(':contains("Text2")')
23
Fitzchak Yitzchaki

Vous demandez pourquoi cela ne fonctionne pas:

$('div').find('a').find(':contains("Text2")')

La raison en est, .find() recherchera les éléments enfants, vous voulez .filter() (car vous avez déjà sélectionné le a - ou vous ajoutez le :contains à la recherche a:

$('div').find('a').filter(':contains("Text2")');
$('div').find('a:contains("Text2")');
39
gnarf

Vous recherchez contient :

$("a:contains('text2')")
6
Kevin Gorski

Utilisez le filtre :contains().

http://api.jquery.com/contains-selector/

2
Chetan Sastry

Comme note supplémentaire, plutôt que de rechercher le texte exact à l'intérieur d'un lien, il pourrait être préférable de rechercher des attributs, par exemple.

<div class="farm-market-items">
  <a class="market-item" data-item-type="seed" data-item-id="817">
    Carrot Seed
    <img alt="" src="" class="item-thumb" />
  </a>
  <a class="market-item" data-item-type="seed" data-item-id="25">
    Spinach Seed
  </a>
  <a class="market-item" data-item-type="tree" data-item-id="981">
    Pear Tree
  </a>
</div>

Vous pouvez maintenant (précisément) rechercher:

all_seeds = $('a[data-item-type="seed"]');

(Je suis un grand fan des attributs data- *.)

2
Amy