Подтвердить что ты не робот

JQuery, если "this" содержит

Я пытаюсь изменить любые элементы, содержащие определенную текстовую строку, на красный цвет. В моем примере я могу заставить дочерние элементы стать синими, но есть что-то о том, как я написал неверную строку "Заменить меня"; красного цвета не происходит. Я отмечаю, что метод "contains" обычно записывается как :contains, но я не мог получить это для проверки с помощью $(this).

$('#main-content-panel .entry').each(function() {
       $(this).css('color', 'blue');      
});         

$('#main-content-panel .entry').each(function() {
   if($(this).contains("Replace Me").length > 0) {
        $(this).css('color', 'red'); 
    }      
});

Fiddle: http://jsfiddle.net/zatHH/

4b9b3361

Ответ 1

:contains является селектором. Чтобы проверить, относится ли селектор к данной переменной, вы можете использовать is:

if($(this).is(':contains("Replace Me")')) 

Однако в этом случае решение Vega является более чистым.

Ответ 2

Я не думаю, что в jQuery есть функция .contains. Существует функция .contains, но эта функция используется, чтобы увидеть, является ли элемент DOM потомком другого элемента DOM, См. документацию для .contains. (Credits to @beezir)

Я думаю, что вы ищете селектор :contains. Подробнее см. Ниже.

$('#main-content-panel .entry:contains("Replace Me")').css('color', 'red');

http://jsfiddle.net/zatHH/1/

Ответ 3

вы можете использовать match для поиска текста внутри конкретного элемента

$('#main-content-panel .entry').each(function() {
    if($(this).text().match('Replace Me')) {
        $(this).css('color', 'red'); 
    }      
});

Это работает, увидев Обновленный скрипт

Ответ 4

Я думаю, мы должны преобразовать наш текст в нижний регистр. Лучше проверить с помощью строчных и прописных букв.

$('#main-content-panel .entry').each(function() {
    var ourText = $(this).text().toLowerCase(); // convert text to Lowercase
    if(ourText.match('replace me')) {
        $(this).css('color', 'red'); 
    }      
});