JQuery - проверьте, соответствует ли содержимое тега sometext, а затем что-то делать

Скажем, у меня есть много из них в моем содержании div: <cite class="fn">blabla</cite>

Как я могу проверить каждый тег cite content (в данном случае: blabla) с классом fn, чтобы увидеть, равно ли он "sometext", а затем изменить цвет на красный?

Очень просто.

Ответы

Ответ 1

$('cite.fn:contains(blabla)').css('color', 'red');

Изменить: хотя это также будет соответствовать "blablablabla".

$('cite.fn').each(function () {
    if ($(this).text() == 'blabla') {
        $(this).css('color', 'red');
    }
});

Это должно быть более точным.

Изменить: На самом деле, я думаю, что решение базмегакапы более элегантно:

$('cite.fn').filter(function () {
    return $(this).text() == 'blabla';
}).css('color', 'red');;

Ответ 2

Вы можете использовать удивительный метод .filter(). Он может принимать функцию в качестве ее параметра, что уменьшит элементы коллекции jQuery до тех, кто передает свой тест (для которых функция возвращает true). После этого вы можете легко запускать команды для остальных элементов:

var searchText = 'blabla';

$('cite.fn').filter(function () {
    return $(this).text() === searchText;
}).css('color', 'red');

jsFiddle Demo

Ответ 3

Вы можете сделать что-то вроде:

$('cite.fn').each(function() {
  var el = $(this);
  if (el.text() === 'sometext') {
     el.css({ 'color' : 'red' });
  }
});

Это вызывает функцию против каждого cite, у которого есть класс fn. Эта функция проверяет, соответствует ли текущее значение cite "sometext".

Если это так, мы изменим свойство CSS color (text-color) на red.

Примечание Я использую jQuery в этом примере, так как вы специально отметили свой вопрос jQuery. Игнорируйте нижний предел, это было применено до того, как я отредактировал опечатку, которую я сделал (el.val(), а не el.text())

Ответ 4

Без jQuery:

var elms = document.querySelectorAll("cite.fn"), l = elms.length, i;
for( i=0; i<l; i++) {
    if( (elms[i].innerText || elms[i].textContent) == "blabla") {
        elms[i].style.color = "red";
    }
}