Скажем, на веб-странице есть строка типа «Я простая строка», которую я хочу найти. Как бы я пошел об этом с помощью JQuery?
241
JQuery имеет метод содержит. Вот фрагмент для вас:
<script type="text/javascript">
$(function() {
var foundin = $('*:contains("I am a simple string")');
});
</script>
Селектор выше выбирает любой элемент, который содержит целевую строку. Foundin будет объектом jQuery, который содержит любой соответствующий элемент. См. Информацию об API по адресу: https://api.jquery.com/contains-selector/.
С подстановочным знаком '*' следует отметить, что вы получите все элементы, включая элементы html a body, которые вам, вероятно, не нужны. Вот почему в большинстве примеров в jQuery и других местах используется $ ('div: Содержит ("Я простая строка")')
Обычно селекторы jQuery не выполняют поиск в «текстовых узлах» в DOM. Однако если вы используете функцию .contents (), текстовые узлы будут включены, тогда вы можете использовать свойство nodeType для фильтрации только текстовых узлов, а свойство nodeValue для поиска текстовой строки.
источник
.andSelf()
. Из api.jquery.com/andSelf : «Объекты jQuery поддерживают внутренний стек, который отслеживает изменения соответствующего набора элементов. Когда вызывается один из методов обхода DOM, новый набор элементов помещается в стек. Если предыдущий набор элементов также желателен, и может помочь .andSelf (). " Я не вижу предыдущего контекста, что мне не хватает?Это выберет только элементы листа, которые содержат «Я простая строка».
Вставьте следующее в адресную строку, чтобы проверить это.
Если вы хотите захватить просто «Я простая строка» . Сначала оберните текст в такой элемент.
а затем сделай это.
источник
Если вы просто хотите, чтобы узел находился ближе всего к искомому тексту, вы можете использовать это:
Это даже будет работать, если ваш HTML выглядит так:
Использование вышеупомянутого селектора найдет
<strong>
тег, так как это последний тег, который содержит всю эту строку.источник
<p>my text <b>my text</b></p>
- удаление предков<b>
тега проиграть другой матчВзгляните на основной момент (плагин jQuery).
источник
Просто добавив к ответу Тони Миллера, так как это дало мне 90% к тому, что я искал, но все равно не сработало. Добавление
.length > 0;
в конец его кода заставило мой скрипт работать.источник
foundin += '*';
эта функция должна работать. в основном выполняет рекурсивный поиск, пока мы не получим четкий список листовых узлов.
источник