Найти текстовую строку с помощью jQuery?

Экран iPhone имеет 163 DPI, но я обнаружил, что изображения с таким разрешением выглядят слишком маленькими в Xcode и Interface Builder. Я рекомендую сделать вид, что экран имеет 72 DPI при создании растровых изображений для iPhone, но помните, что у экрана 163 DPI, если вы рисуете линейку.

240
задан Reinstate Monica Please 8 July 2014 в 12:19
поделиться

5 ответов

jQuery имеет метод contains. Вот вам отрывок:

<script type="text/javascript">
$(function() {
    var foundin = $('*:contains("I am a simple string")');
});
</script>

Селектор выше выбирает любой элемент, содержащий целевую строку. Foundin будет объектом jQuery, содержащим любой совпавший элемент. См. Информацию об API по адресу: https://api.jquery.com/contains-selector/

Одна вещь, которую следует отметить с помощью подстановочного знака «*», заключается в том, что вы получите все элементы, включая ваш html-текст. элементы, которые вам, вероятно, не нужны. Вот почему в большинстве примеров в jQuery и других местах используется $ ('div: contains ("Я - простая строка")')

325
ответ дан 23 November 2019 в 03:17
поделиться

При этом будут выбраны только листовые элементы, содержащие «Я - простая строка».

$('*:contains("I am a simple string")').each(function(){
     if($(this).children().length < 1) 
          $(this).css("border","solid 2px red") });

Вставьте следующее в адресную строку, чтобы проверить это.

javascript: $('*:contains("I am a simple string")').each(function(){ if($(this).children().length < 1) $(this).css("border","solid 2px red") }); return false;

Если вы хотите просто захватить «Я простая струна» . Сначала оберните текст в такой элемент.

$('*:contains("I am a simple string")').each(function(){
     if($(this).children().length < 1) 
          $(this).html( 
               $(this).text().replace(
                    /"I am a simple string"/
                    ,'<span containsStringImLookingFor="true">"I am a simple string"</span>' 
               )  
           ) 
});

, а затем сделайте это.

$('*[containsStringImLookingFor]').css("border","solid 2px red");
29
ответ дан 23 November 2019 в 03:17
поделиться

Если вам нужен узел, ближайший к тексту, вы ищите, вы можете использовать это:

$('*:contains("my text"):last');

Это будет работать, даже если ваш HTML выглядит так:

<p> blah blah <strong>my <em>text</em></strong></p>

С помощью вышеуказанного селектора вы найдете тег , поскольку это последний тег который содержит всю эту строку.

17
ответ дан 23 November 2019 в 03:17
поделиться

Обычно селекторы jQuery не выполняют поиск в «текстовых узлах» в DOM. Однако, если вы используете функцию .contents (), текстовые узлы будут включены, тогда вы можете использовать свойство nodeType для фильтрации только текстовых узлов и свойство nodeValue для поиска текстовой строки.

    $('*', 'body')
        .andSelf()
        .contents()
        .filter(function(){
            return this.nodeType === 3;
        })
        .filter(function(){
            // Only match when contains 'simple string' anywhere in the text
            return this.nodeValue.indexOf('simple string') != -1;
        })
        .each(function(){
            // Do something with this.nodeValue
        });
51
ответ дан 23 November 2019 в 03:17
поделиться

Взгляните на подсветку (плагин jQuery).

13
ответ дан 23 November 2019 в 03:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: