Получение всех ссылок с определенным внутренним значением HTML в jQuery
<div>
<a>
Text1
<img alt="" stc="" />
</a>
<a>
Text2
</a>
</div>
Я хочу выбрать все элементы привязки, которые имеют text=text2
. Я ищу что-то вроде этого:
$('a[text=Text2]')
Изменить: Почему это не работает? По какой-то причине он должен быть в таком формате:
$('div').find('a').find(':contains("Text2")')
Ответы
Ответ 1
Вы спрашиваете, почему это не работает:
$('div').find('a').find(':contains("Text2")')
Причина в том, что .find()
будет искать дочерние элементы, вы хотите .filter()
(поскольку вы уже выбрали a
- или вы добавили :contains
к поиску:
$('div').find('a').filter(':contains("Text2")');
$('div').find('a:contains("Text2")');
Ответ 2
Вы ищете contains:
$("a:contains('text2')")
Ответ 3
Используйте фильтр :contains()
.
http://api.jquery.com/contains-selector/
Ответ 4
В качестве дополнительной заметки, а не для сканирования точного текста внутри ссылки, лучше было бы сканировать атрибуты, например.
<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>
Теперь вы можете (точно) сканировать:
all_seeds = $('a[data-item-type="seed"]');
(Я большой поклонник атрибутов data- *.)