Может ли кто-нибудь сказать мне, можно ли найти элемент на основе его содержимого, а не id или class?
Я пытаюсь найти элементы, которые не имеют отдельных классов или идентификаторов. (Тогда мне нужно найти этот родитель элемента.)
Вы можете использовать селектор :contains , чтобы получать элементы на основе их содержимого.
В документации JQuery это говорит:
Соответствующий текст может появиться непосредственно внутри выбранного элемента, в любом из потомков этого элемента или в комбинации
Поэтому вам недостаточно использовать селектор :contains() , вам также нужно проверить, является ли искомый текст прямым содержанием элемента, на который вы нацеливаетесь, что-то вроде этого:
В jQuery есть возможность задать селектор ‘contains’. Вот пример:
Этот селектор возвращает массив объектов jQuery, который соответствует элементам DOM, содержащим заданный текст. Узнать больше можно в документации по jQuery (на английском языке) .
Учтите: ‘*’ означает, что Вы получите все элементы, включая ‘html’ и ‘body’, что, скорее всего, Вам не нужно. Поэтому, наверное, предпочтительней написать что-то типа:
В этом случае поиск будет выполнен только по элементах DIV с классом find-in-me.
Вы можете поэкспериментировать со следующим примером, чтобы понять суть работы селектора. Обратите внимание на случай со второй кнопкой, когда поиск вернёт не только элемент, содержащий данную строку, а вместе с ним — всех его предков. Поэтому будьте осторожны.
Материал из JQuery
Соответствует элементам, которые содержат строку text. Чувствителен к регистру.
С помощью селектора :contains(text), элемент будет выбран как в случае если строка text присутствует непосредственно внутри него, так и в случае, если она находится внутри одного из его потомков.
В действии
Обведем красной рамкой div-элементы, содержащие текст «товарищ».
Источник: