JQuery выбрать на основе текста - PullRequest
24 голосов
/ 16 сентября 2009

Мне нужно выбрать элемент на основе его текста в jQuery.

Например:

<span>this text</span>

Я знаю, что могу использовать .contains () для выбора на основе текста, но это не исключение.

Я не хочу выбирать:

<span>this text and that text</span>

Я хочу выбрать элемент, если это единственный текст элемента.

Помимо использования регулярных выражений, как это сделать с помощью селекторов jQuery?

Спасибо.

1 Ответ

34 голосов
/ 16 сентября 2009

У вас есть рычаг с селектором: contains, но это только так. Вам нужно будет дополнительно урезать набор элементов на основе точных совпадений текста, например:

$("span:contains(this text)")
.filter
(
  function()
  {
    return $(this).text() === "this text";
  }
)

Это делает использование начального содержимого технически ненужным, но вы можете ощутить выигрыш в производительности, начав с небольшого набора элементов SPAN, прежде чем выполнять фильтрацию до нужного набора.

РЕДАКТИРОВАНИЕ : принял предложение Кена Браунинга использовать функцию text() вместо innerHTML для сравнения строк в функции filter. Идея в том, что innerHTML будет захватывать текст, который нас не особенно интересует (включая разметку).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...