jQuery - 检查标签的内容是否等于某个文本,然后执行某些操作

时间:2011-12-22 12:44:55

标签: javascript jquery dom jquery-selectors dom-traversal

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

如何检查每个cite标记的内容(在本例中为blabla),并使用类fn查看它是否等于“sometext”然后把它的颜色改成红色?

很简单。

4 个答案:

答案 0 :(得分:31)

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

编辑:虽然这将匹配&#34; blablablabla&#34;同样。

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

这应该更准确。

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

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

答案 1 :(得分:11)

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

var searchText = 'blabla';

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

jsFiddle Demo

答案 2 :(得分:2)

您可能会执行以下操作:

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

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

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

注意我在此示例中使用了jQuery,因为您已经专门标记了问题jQuery。忽略downvote,这是在我编辑了我做过的拼写错误之前应用的(el.val()而不是el.text()

答案 3 :(得分: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";
    }
}