Есть ли способ получить элемент из объектов DOM, которые содержат некоторую строку? Я пытаюсь:
$( "*:contains('searchedString')" ).first().text( "test" );
или же
$( "*:contains('searchedString')" ).text( "test" );
Но это возвращает объект <html>, поэтому после выполнения весь контент исчезает и на экране отображается только test.
Обновлено:
* ...Но мне нужен поиск по всему документу ...
Объект DOM со строкой будет типами ввода или любыми другими тегами, такими как <p> или <div> и т. д.?
К сожалению - да ....
html или body содержат это содержимое. вы должны использовать тег элемента, такой как p или span или что-то еще.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Получение всего с * всегда будет включать тег <html>.
Чтобы получить самый глубокий элемент, вы можете получить последний элемент, найденный вашим селектором, используя метод jQuery .last():
<div><span>test</span></div>
let deepestElement = $("*:contains('test')").last();
console.info(deepestElement);
Вот рабочий JSFiddle: https://jsfiddle.net/Zenoo0/ryjtwdqb/2/
Вы можете получить все результаты без дочерних элементов, как показано ниже:
var result = $( "*:contains('searchedString'):not(:has(*))" ).text( "test" );
console.info(result);<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<span>searchedString</span>
</div>Или вы можете ограничить селектор тегами, чтобы избежать нежелательных результатов.
И вы можете использовать filter, чтобы получить полезную часть.
var tags = ['div', 'p', 'span'];
var str = "";
var result = $(tags.join(',')).filter(':contains("searchedString")');
console.info(result.length);
// ... filter result or something<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<span>searchedString</span>
</div>$( "h1,h2,div:contains(searchStrinng)" ).first().text( "test" );
$( "h1,h2,div:contains(searchStrinng)" ).text( "test" );
Example:
<h1>Hello</h1>
<h2>Hello</h2>
- For first element (include only h1,h2,div)
$( "h1,h2,div:contains(Hello)" ).first().text( "test" );
- For all element(include only h1,h2,div)
$( "h1,h2,div:contains(Hello)" ).text( "test" );
Вам нужно быть более точным в своем селекторе.
*не даст вам желаемого результата.