Есть несколько вопросов, которые похожи на это. Но я не нашел этот точный вопрос о SO. (и ответа в другом месте).
Мне просто нужно знать, показывает ли строка в наименьшей степени. Вполне возможно, что строка встречается несколько раз в HTML, что она скрыта один раз и показывает другое время.
Это о видимости на странице, не обязательно в окне просмотра. Таким образом, если вам нужно прокрутить, чтобы просмотреть его, это тоже нормально.
UPDATE: Я знаю :contains
и is(":visible")
что не проблема. Элементы могут быть вложенными, конечно, и должны работать при любых обстоятельствах.
Следующее должно работать, но это не самое эффективное решение:
$("body, body *").contents().filter(function () {
return this.nodeType === 3 && this.nodeValue.indexOf("Foo & Bar") >= 0;
}).parent(":visible");
Этот код:
1 Это означает самый глубокий узел, который содержит строку. Селектор :contains
селектор, будет бесполезным, поскольку он может вернуть видимый элемент (на самом деле ветвь элементов), содержащий невидимый дочерний элемент, содержащий указанную строку.
2 Элемент отображается, если его родители также видны
Вы можете использовать : содержит над вашим телом элемент вместе с length
, которая подсчитывает количество совпадений.
if($('body:contains("demo")').length){
alert("The world exists");
}else{
alert("The world doesn't exist");
};
span
или аналогичный объект, например, который вы украсили атрибутом данных или классом, который должен облегчить это?