21

假设我的内容中有很多这样的内容div<cite class="fn">blabla</cite>

如何使用类检查每个cite标签的内容(在本例中为:)以查看它是否等于“sometext”,然后将其颜色更改为红色?blablafn

非常简单。

4

4 回答 4

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

编辑:虽然这也会匹配“blablablabla”。

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

那应该更准确。

编辑:实际上,我认为 bazmegakapa 的解决方案更优雅:

$('cite.fn').filter(function () {
    return $(this).text() == 'blabla';
}).css('color', 'red');;
于 2011-12-22T12:49:47.960 回答
16

您可以使用惊人的.filter()方法。它可以将一个函数作为其参数,这会将 jQuery 集合的元素减少为那些通过其测试的元素(对于这些元素,该函数返回 true)。之后,您可以轻松地在其余元素上运行命令:

var searchText = 'blabla';

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

jsFiddle 演示

于 2011-12-22T12:54:48.933 回答
2

您可能会执行以下操作:

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

cite这会针对每个具有 class的函数触发一个函数fn。该函数检查当前cite的值是否等于“sometext”。

如果是,那么我们将 CSS color(文本颜色)属性更改为red.

注意我在这个例子中使用了 jQuery,因为你已经特别标记了你的 question jQuery。忽略不赞成票,这是在我编辑我犯的错字之前应用的(el.val()而不是el.text()

于 2011-12-22T12:46:56.967 回答
1

没有 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";
    }
}
于 2011-12-22T12:47:44.833 回答